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

Google Apps Script自定义函数AMin1返回结果异常求助

修复Google Apps Script自定义函数AMin1的逻辑异常

问题根源

调用AMin1(499.2, 510, 300)时,按代码逻辑计算流程如下:

  1. 初始化L1 = 499.2 + 20 = 519.2
  2. L1 < 300不成立,跳过while循环
  3. 519.2 > 510成立,执行L1 = 519.2 - 499.2——理论结果是20,但由于浮点数精度误差,实际计算结果可能是20.0000000000001或19.9999999999999这类近似值
  4. 此时L1 == 20的严格相等判断不成立,进入else分支返回L1的近似值(显示为20),不符合预期的字符串返回

修复后的代码

function AMin1(A, PD1, Min1) {
  let L1 = A + 20;
  while (L1 < Min1) {
    L1 += A;
  }   
  if (L1 > PD1) {
    L1 -= A;
  }
  // 用精度范围判断浮点数是否接近20,规避精度误差
  if (Math.abs(L1 - 20) < 0.0001) {
    return "Move to Higher Print Size";
  } else {
    return L1;
  }
}

修复说明

  • 将严格相等判断L1 == 20替换为基于精度阈值的范围判断,避免浮点数运算的精度误差导致条件不触发
  • 简化变量初始化写法,提升代码可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 03:21:07