VB6和VB.NET的精确差异

时间:2015-06-05 15:37:42

标签: vb.net vb6

我在VB 6和VB.NET中得到两个不同的结果,用于处理分区操作的相同代码。

ABC = 9.999728
result = IIf(ABC <> 0, 1 / ABC, 10 ^ 10)

在VB6中,我得到了结果= 0.1000027

在VB.NET中,结果为0.100002721

但是,当我在VB.NET中使用CSng(Val(CStr(result)))时,我得到0.1000027。

1)为什么VB.NET与VB6相比会产生不同的精度?

2)为什么CSng(Val(CStr(result)))产生与VB6相同的精度?

3)这可能看起来很简单,但这个问题会重复并传播到我的最终结果,这与VB6中的等效结果不同。我能否安全地假设VB.NET结果比VB6更精确并完全丢弃VB6结果?

1 个答案:

答案 0 :(得分:0)

在VB6中:

Dim ABC, result

ABC = 9.999728
result = IIf(ABC <> 0, 1 / ABC, 10 ^ 10)
MsgBox result

显示器:

0.100002720073986

随机使用CSng()当然会截断精度,应该像瘟疫一样避免使用过时的Val()函数。如果您想要Double,请改用CDbl()