建议尽量少用单精度、双精度数据类型的原因-红尘如烟
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 综合其它


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

发表时间:2011/4/30 0:29:17 评论(6) 浏览(109037)  评论 | 加入收藏 | 复制
   
摘 要:建议尽量少用单精度、双精度数据类型的原因
正 文:

      很多人都知道在数据库中如果需要进行精确计算的字段,尽量不使用单精度和双精度这两种数据类型。因为它们属于浮点数,而浮点数采用二进制保存小数,并且进行浮点运算,这就意味着计算的结果准确性会比较差。如果一定需要小数,则可以使用货币(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群(群号:198465573)
 
 相关文章
谨慎使用单精度/双精度数值类型  【LucasLynn   2007/11/7】
access里,单精度型、双精度型、小数型,该如何选择?  【Victor Duane  2011/10/20】
sqlserver2005 TSql新功能学习总结(数据类型篇)  【风行  2013/2/16】
设置查询参数的数据类型  【蒋元根  2013/3/8】
【Access教程】设计视图中Access允许的九种数据类型  【漏蛧尐魚℡  2013/6/10】
常见问答
技术分类
相关资源
文章搜索
关于作者

红尘如烟

文章分类

文章存档

友情链接