Alb*_*ing 3 vb.net vb.net-2010
我想使用 vb.net 用小数执行基本计算。
Dim a As Single= 7200.5
Dim b As Single= 7150.3
Dim c As Single= a - b
'Expected result = 50.2
MsgBox(a.ToString + " - " + b.ToString + " = " + c.ToString.Trim)
'Produced result is: 50.2002
Dim single1 As Single
Dim single2 As Single
Dim single3 As Single
single1 = 425000
single2 = 352922.2
single3 = single1 - single2
'Expected result is: 72077.8
MsgBox(single3.ToString)
'Produced result is: 72077.81
Run Code Online (Sandbox Code Playgroud)
这么简单的计算,结果怎么会这么不准确呢?当我将数据类型更改为 时,问题解决了Decimal,但Decimal对象消耗了更多内存(16 字节)。是否有任何替代数据类型可用于执行具有准确结果的简单分数计算?
这与浮点数在内存中的存储方式有关,.Net 中的 Single 是单精度浮点数,其精度远不如 Decimal 或 Double 来存储十进制数。
当计算机计算您的数字时,它只能使用二进制分数,并且在单精度浮点数中,它们不是很准确。
有关更多信息,请参阅http://en.wikipedia.org/wiki/Single-precision_floating-point_format。
编辑:这里有一些特定于 VB.Net 的更多信息:http : //msdn.microsoft.com/en-us/library/ae382yt8( v=vs.110) .aspx
| 归档时间: |
|
| 查看次数: |
7884 次 |
| 最近记录: |