设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1622|回复: 2
打印 上一主题 下一主题

[Access本身] 关于VBA中浮点数减法的问题

[复制链接]
跳转到指定楼层
1#
发表于 2011-7-16 20:30:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   具体代码如下,怎么样才能使得MsgBox输出的结果是0.06呢?

     Dim dblA As Double, dblB As Double
   
    dblA = 0.68
    dblB = 0.62
   
    MsgBox dblA - dblB

   请各位大侠指教!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-7-17 02:32:42 | 只看该作者
把Double(双精度)改成Single(单精度)。
3#
 楼主| 发表于 2011-7-26 23:22:09 | 只看该作者
虽然这道题将数据类型改成Single(单精度)后,运行结果正确。
但是换了其它小数,还是会有问题。
例如:
    Dim sngA As Single, sngB As Single
    sngA = 0.0068
    sngB = 0.0062
    MsgBox sngA - sngB

今天在网上找到了彻底的解决方法:
  Dim sngA As Single, sngB As Single
    sngA = 0.0068
    sngB = 0.0062
    MsgBox CDec(sngA) - sngB

将类型转换成Decimal后再计算就可以了。
Decimal数据类型详细情况请看MSDN
Decimal只能用CDec()强行指定为Decimal类型。
Decimal速度没有整型快(那是当然的);如果对于精度没有过度要求,还是Single/Double吧。

谢谢版主的热心帮助了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-16 12:52 , Processed in 0.100685 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表