2015-11-19 42 views
-2

在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

可能重复[浮点数学是否被破坏?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – Liam

+0

此外[为什么C#中的浮点数算法不精确?] (http://stackoverflow.com/questions/753948/why-is-floating-point-arithmetic-in-c-sharp-imprecise) – Liam

+1

什么是你的应用程序在哪里做sextillionth会有所作为? –

回答

2

decimal有28个显著数字。你的区别在第29位。

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