You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA中Double类型变量If条件始终不成立问题求助

解决Double类型变量相等判断失效的问题

直接解决方案

不要直接用=或<>判断Double类型变量的相等性,改用精度阈值比较法:

  • 若要判断Bm等于1,修改If语句条件:
    If Abs(Bm - 1) < 1e-9 Then
        GoTo FIN
    End If
    
  • 若要判断Bm等于Bmin,则改成:
    If Abs(Bm - Bmin) < 1e-9 Then
        GoTo FIN
    End If
    
  • 对应的Do While循环条件调整为:
    Do While condition1 And Abs(Bm - 1) >= 1e-9
    

原因说明

Double是浮点数类型,它在内存中存储的是数值的近似值而非精确值。即便调试时显示变量值为1,实际可能是0.999999999999999或1.000000000000001这类极其接近1但不等于1的数值。直接用=判断会因这种微小的精度误差导致条件不成立,而通过判断两个值的差的绝对值是否小于一个极小阈值(比如1e-9),可以忽略浮点数精度带来的误差,实现逻辑上的相等判断。

内容的提问来源于stack exchange,提问作者GLab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 19:38:11