Math.Round(keyRate, 5).ToString("N5")
如果keyRate是一个像3.7066666666这样的数字,你会看到3.70666而不是3.70667
这可能是什么问题?
答案 0 :(得分:4)
Math.Round函数默认使用所谓的银行家舍入。银行家向往偶数的四舍五入。要获得更传统的舍入类型,请调用Round方法,如下所示:
Math.Round(3.7066666666, 5, MidpointRounding.AwayFromZero);
更正:在再次查看@ slandau的数字后,我意识到银行家的四舍五入不是问题。银行家的舍入仅适用于所需精度右侧的数字的小数部分正好在两个值之间的中间位置。换句话说
Math.Round(3.7066650000, 5, MidpointRounding.AwayFromZero) = 3.70667
而以下(银行家的四舍五入)
Math.Round(3.7066650000, 5, MidpointRounding.ToEven) = 3.70666
无论如何,@ slandau的结果应该是3.70667。
答案 1 :(得分:-1)
您应该使用小数和Math.Round(keyRate, 5, MidpointRounding.AwayFromZero)
它不适用于双