求和小数

时间:2015-11-19 12:13:19

标签: c# math

在C#中

(18761311001m * 0.36m + 
 18761311001m * 0.35m +
 18761311001m * 0.29m) 
/66.1445m 
=   283641285.38276047139217924393

但是

((18761311001m * 0.36m)/66.1445m) + 
((18761311001m * 0.35m)/66.1445m) + 
((18761311001m * 0.29m) /66.1445m) 
= 283641285.38276047139217924392

任何人都知道为什么差异以及如何为两者获得相同的答案?

由于

1 个答案:

答案 0 :(得分:2)

decimal有28位有效数字。你的差异在第29位。

如果您需要更高的精度,则必须使用任意精度的数学库。有关建议,请参阅this answer