zl程序教程

您现在的位置是:首页 >  其他

当前栏目

四舍五入的坑

2023-03-07 09:01:55 时间

话说,再做一个财务报表统计中,发现一个简单的乘法 3.00 * 0.045 =0.135,按照咱们的四写五入就是 0.14。但我用C# 写var Value = Math.Round(3.00 * 0.045, 2), 竟然是0.13.。。不是预期的0.14,怎么办好呢。。

后来查询得知,原来在Math.Round加入MidpointRounding.AwayFromZero即可。eg:var Value = Math.Round(3.00 * 0.045, 2,MidpointRounding.AwayFromZero),那为什么要加入MidpointRounding.AwayFromZero呢。。

原来MidpointRounding 是一个枚举,而AwayFromZero是一个策略。说人话就是告诉 Math.Round该按什么原则进行处理。

更详细的看,微软自己的解释吧。https://learn.microsoft.com/zh-cn/dotnet/api/system.midpointrounding?redirectedfrom=MSDN&view=net-7.0#code-try-2

当然有更偏门的处理,就是直接取小数后第3位,然后判断这个,不过麻烦咯,也容易出错。所以就在这里留字,供其他人参考。