Sat*_*ish -1 .net vb.net math floating-point
在执行过程中,
我只是打开了即时窗口,我输入了这样的,
?1.66 + 0.83
Run Code Online (Sandbox Code Playgroud)
因此,此表达式显示以下内容,
2.4899999999999998
Run Code Online (Sandbox Code Playgroud)
实际上该表达式应该已经返回2.49但是返回相同的值并使用不同的浮点数.这有什么问题.?有没有可用于解决此问题的工作.?顺便说一句,我不想格式化上述值.
Kna*_*ģis 14
这就是浮动数字的工作原理.它们具有一定程度的精度,当您编写1.66它时,它实际上可能存储在内存中1.66000000000000000001或存储1.65999999999999999在内存中.因此,当您开始将这些数字加在一起时,会出现小错误.
如果要避免这种情况,可以使用System.Decimal大多数情况下将解决此问题的数据类型(它使用不同的模型将值存储在内存中以保留精确值).
例如,试试
?1.66D + 0.83D
Run Code Online (Sandbox Code Playgroud)
D 后缀表示该值是类型Decimal
| 归档时间: |
|
| 查看次数: |
161 次 |
| 最近记录: |