小数求和

本文关键字:求和 小数 | 更新日期: 2023-09-27 18:22:43

在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

有人知道为什么会有差异,以及如何获得两者相同的答案吗?

感谢

小数求和

decimal有28个有效数字。你的差额是第29位。

如果您需要更高的精度,则必须使用任意精度的数学库。请参阅此答案以获取一些建议。