c#double multiply获得额外的精度

时间:2015-09-08 03:23:25

标签: c#-4.0 double-precision

乘以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

我认为问题不在于四舍五入,而是在倍增。

1 个答案:

答案 0 :(得分:0)

在我明白为什么会发生这种情况之前。我得到了一个解决方法,可能可以帮助其他人,以防他们遇到同样的问题。无论如何它看起来很脏。

args

这样我在乘法后得到37.335,并且在四舍五入到小数点后得到37.34。