Single转换成Double时出现误差

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

手头上正在做一套住房公积金管理软件,碰到了数据精度的问题,偶然发现下面的情况:

代码:

Private Sub Command1_Click()

Dim r1 As Single

r1 = 0.1

Dim result As Double

result = 1 * r1

Debug.Print result

End Sub

结果输出: .100000001490116

很显然,在计算的过程中,r1被从single转换成double类型后参与了计算,而转换的过程中出现了误差,为验证这一点,我修改了代码:

Private Sub Command1_Click()

Dim r1 As Single

r1 = 0.1

Debug.Print CDbl(r1)

End Sub

结果输出: .100000001490116

果然是这样,这个结果让我大出意外,因为我的软件中一部分计算就是把Single类型的利率和Double型的应缴额放在一起进行的,而出现偏差就在所难免了。

为什么会出现误差呢?

MSDN中说:浮点(Single 和 Double)数比 Currency 的有效范围大得多,但有可能产生小的进位误差。

看来为了追求精度,最好把Double类型换成Currency类型,或者把Single类型换成与Double一致。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航