没有正确舍入

本文关键字:舍入 | 更新日期: 2023-09-27 17:49:31

Math.Round(keyRate, 5).ToString("N5")

如果keyRate是像3.7066666666这样的数字,您将看到3.70666而不是3.70667

这里的问题是什么?

没有正确舍入

The Math。四舍五入函数默认使用所谓的银行家四舍五入。庄家的四舍五入趋向偶数。要获得更传统的舍入类型,可以像这样调用Round方法:

Math.Round(3.7066666666, 5, MidpointRounding.AwayFromZero);

更正:在再次查看@slandau的数字后,我意识到银行家的四舍五入不是这里的问题。银行家四舍五入只适用于所需精度右边的数字的小数部分正好是两个值之间的一半。换句话说

Math.Round(3.7066650000, 5, MidpointRounding.AwayFromZero) = 3.70667

而以下(Banker's四舍五入)

Math.Round(3.7066650000, 5, MidpointRounding.ToEven) = 3.70666

@slandau的结果应该是3.70667。

您应该使用十进制和Math.Round(keyRate, 5, MidpointRounding.AwayFromZero)
使用double

是不行的。