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

如何判断用户输入金额是否在总金额±0.2范围内(禁用abs等方法)

问题:不使用abs等内置方法判断金额是否在±0.2区间内

需求说明:给定一个总金额和用户输入的金额,需要判断用户输入的金额是否处于总金额±0.2的区间内。示例如下:

  • 总金额为58.79时,用户输入58.78或58.80,输出“Allowed”;否则输出“Not allowed”
  • 总金额为60时,用户输入59.99或60.01,输出“Allowed”;否则输出“Not allowed”

本人尝试的代码:

const Range = totalAmount - userInsertedAmount;
if ( (Range < 0.2) || (Range > 0.2)) {
  console.log('valid');
} else {
  console.log('invalid');
}

提问:是否可以不使用abs等JavaScript内置方法实现该功能?


解决方案

首先要指出你写的代码存在逻辑错误:(Range < 0.2) || (Range > 0.2) 这个条件会覆盖所有情况(除了Range恰好等于0.2的时候),等于把所有输入都判定为“valid”,这和需求完全相反。

不用abs方法当然可以实现,核心思路是直接判断差值的范围:用户输入和总金额的差值需要在 -0.2到0.2之间(包含边界值)。

修正后的代码(基于差值判断)

const totalAmount = 58.79;
const userInsertedAmount = 58.80;
const range = totalAmount - userInsertedAmount;

// 判断差值是否在-0.2到0.2的区间内
if (range >= -0.2 && range <= 0.2) {
  console.log('Allowed');
} else {
  console.log('Not allowed');
}

另一种更直观的写法(直接判断用户输入的范围)

你也可以跳过计算差值,直接判断用户输入的金额是否在 总金额-0.2 到 总金额+0.2 的区间内:

const totalAmount = 60;
const userInsertedAmount = 59.99;

if (userInsertedAmount >= totalAmount - 0.2 && userInsertedAmount <= totalAmount + 0.2) {
  console.log('Allowed');
} else {
  console.log('Not allowed');
}

这两种写法都不需要用到abs等内置方法,完全通过基础的比较运算符就实现了需求,逻辑清晰且符合要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:02:38