乘以2倍后,它会获得如此多的额外精度。然后它导致舍入(到2个十进制)问题。我假设得到37.34,但它给出了37.33。 (在调试模式下查看)
additional precision http://s8.postimg.org/9nn2bbiab/precision.jpg
知道为什么吗?以及如何解决?
修改
我确实尝试过MidpointRounding。尝试使用任何计算器它应该给你37.335 但是C#给了我37.334999999999,后来在用2位小数舍入后得到了错误的答案。
still rounded wrongly http://s28.postimg.org/psi2dz59n/precision2.jpg
我认为问题不在于四舍五入,而是在倍增。
答案 0 :(得分:0)
在我明白为什么会发生这种情况之前。我得到了一个解决方法,可能可以帮助其他人,以防他们遇到同样的问题。无论如何它看起来很脏。
args
这样我在乘法后得到37.335,并且在四舍五入到小数点后得到37.34。