【发布时间】:2012-04-01 11:32:11
【问题描述】:
我决定重新提出我的问题:
decimal dTotal = 0m;
foreach (DictionaryEntry item in _totals)
{
if (!string.IsNullOrEmpty(item.Value.ToString()))
{
dTotal += Convert.ToDecimal(item.Value);
}
}
Console.WriteLine(dTotal / 3600m);
Console.WriteLine(decimal.Round(dTotal / 3600m, 2));
Console.WriteLine(decimal.Divide(dTotal, 3600m));
以上代码返回:
579.99722222222222222222222222
580.00
579.99722222222222222222222222
所以,这就是我的问题所在,我真的需要它来显示579.99;但是任何一轮,无论是decimal.Round 还是Math.Round 仍然返回580;甚至{0:F} 的字符串格式也返回580.00。
我怎样才能正确地做到这一点?
【问题讨论】:
-
尝试除以 3600.0 看看是否可行?
-
@simchona 这行不通,反正 int 被提升为双倍
-
可能是内部表示本身造成的舍入误差。你试过十进制吗?
-
嗨——这两个链接可能对你有帮助 stackoverflow.com/questions/3840793/… && stackoverflow.com/questions/1008826/… ,干杯
-
不要使用 var,明确输入十进制
标签: c# winforms math financial