Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > 综合其它

建议尽量少用单精度、双精度数据类型的原因

时 间:2011-04-30 00:29:17
作 者:红尘如烟   ID:10768  城市:成都
摘 要:建议尽量少用单精度、双精度数据类型的原因
正 文:

      很多人都知道在数据库中如果需要进行精确计算的字段,尽量不使用单精度和双精度这两种数据类型。因为它们属于浮点数,而浮点数采用二进制保存小数,并且进行浮点运算,这就意味着计算的结果准确性会比较差。如果一定需要小数,则可以使用货币(Currency)型和小数(Decimal)型,这两种是量化的整数数据类型,具有高度的正确性。

通过如下代码可以非常清楚的测试出浮点数的准确度不够:
Sub 数据类型对比测试()
    Dim sngNum As Single
    Dim dblNum As Double
    Dim varNum As Variant   '小数没有单独的类型,它属于Variant的子类型
    Dim curNum As Currency
    Dim lngI As Long
   
    For lngI = 1 To 1000
        sngNum = sngNum + 0.1
        dblNum = dblNum + 0.1
        varNum = varNum + CDec(0.1)
        curNum = curNum + 0.1
    Next
    Debug.Print "单精度:" & sngNum
    Debug.Print "双精度:" & dblNum
    Debug.Print "小数:  " & varNum
    Debug.Print "货币:  " & curNum

End Sub

根据我们的想象,最后的结果应该是1才对,而实际返回结果为:
单精度:99.99905
双精度:99.9999999999986
小数:  100
货币:  100


附   图:



Access软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助