如何解决基于 DataTable 的 NuGet 包四舍五入到 2 个小数点
我正在使用 ConsoleTableExt 打印表格。我想将几个小数四舍五入到 2 分。 NuGet 包正在使用 DataTable
。目前,我正在使用 .ToString(f2")
,但我阅读了一篇文章,其中指出在 DataTable 中执行此操作是一种不好的做法。有什么建议吗?
// Main()
var tableBuilder = ConsoleTableBuilder.From(backtest.ReportResults(backtestResults)).WithFormat(ConsoleTableBuilderFormat.Alternative);
tableBuilder.ExportAndWriteLine();
public static DataTable ReportResults(List<BacktestResult> backtestResults)
{
var table = new DataTable();
table.Columns.Add("Pair",typeof(string));
table.Columns.Add("Trades",typeof(int));
table.Columns.Add("Average Profit %",typeof(string));
table.Columns.Add("Cumulative Profit %",typeof(string));
table.Columns.Add($"Total Profit",typeof(string));
table.Columns.Add($"Total Profit %",typeof(string));
foreach (var pair in _backtestOptions.Pairs)
{
var results = backtestResults.Where(e => e.Pair.Equals(pair)).ToList();
var Trades = results.Count;
var profitMean = results.Count > 0 ? results.Average(e => e.ProfitPercentage) : 0;
var profitMeanPercentage = results.Count > 0 ? results.Average(e => e.ProfitPercentage) * 100 : 0;
var profitSum = results.Sum(e => e.ProfitPercentage);
var profitSumPercentage = results.Sum(e => e.ProfitPercentage) * 100;
var profitTotalAbs = results.Sum(e => e.ProfitAbs);
var profitTotal = results.Sum(e => e.ProfitAbs) / 1;
var profitTotalPercentage = results.Sum(e => e.ProfitPercentage) * 100;
table.Rows.Add(pair,Trades,profitMeanPercentage.ToString("f2"),profitSumPercentage.ToString("f2"),profitTotalAbs.ToString("f8"),profitTotalPercentage.ToString("f2"));
}
return table;
}
解决方法
您可以使用 Round
的函数 Math
来获取舍入值。 Round(double value,MidpointRounding mode)
其中第二个参数指定如何舍入值,如果它位于两个其他数字的中间。
示例:
decimal decimalVal = 123.456M;
Math.Round(decimalVal,2);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。