Jon*_*eet 15
你所展示的不是decimal- 它是float.他们是非常不同的类型.f是后缀float,又名System.Single.m是后缀decimal,又名System.Decimal.从您的问题中不清楚您是否认为这实际上是在使用decimal,或者您是否只是float用来证明您的恐惧.
如果您使用1.0000000000001m + 1.0000000000001m,您将获得正确的值.请注意,double顺便说一下,该版本无法准确表达任何一个单独的值.
我有关于.NET中两种浮点的文章,你应该沿着其他资源彻底阅读它们:
所有浮点类型有其当然的限制,但特别是你应该不指望二进制浮点精确表示十进制值,如0.1.它仍然不能代表任何不能用28/29十进制数字表示的东西 - 所以如果你将1除以3,你当然不会得到确切的答案.
还应注意的是,范围的decimal比小得多double.因此,虽然它可以具有28-29个十进制数字的精度,但您不能代表真正的大数字(例如10 200)或微小数字(例如10 -200).
| 归档时间: |
|
| 查看次数: |
2974 次 |
| 最近记录: |