Office中国论坛/Access中国论坛

标题: 关于VBA中浮点数减法的问题 [打印本页]

作者: rgbso    时间: 2011-7-16 20:30
标题: 关于VBA中浮点数减法的问题
   具体代码如下,怎么样才能使得MsgBox输出的结果是0.06呢?

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

   请各位大侠指教!

作者: roych    时间: 2011-7-17 02:32
把Double(双精度)改成Single(单精度)。
作者: rgbso    时间: 2011-7-26 23:22
虽然这道题将数据类型改成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吧。

谢谢版主的热心帮助了。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3