我在javascript中的数字比较存在很大问题。
该脚本指责比较“7< 10”是错误的。
console.clear();
var min = parseFloat("5").toFixed(2);
var max = parseFloat("10").toFixed(2);
var value = parseFloat("7").toFixed(2);
console.log(min, max, value);
console.log(value > min); // OK.
console.log(value < max); // ---- false ??????
任何人都知道什么是happing?
答案 0 :(得分:40)
事实证明.toFixed()返回字符串 - 尝试在比较值之前添加parseFloat以查看结果:
console.log(parseFloat(value) < parseFloat(max)); // ---- now true
答案 1 :(得分:2)
您应该始终将浮点数四舍五入,否则在某些情况下您会得到怪异的结果。
尝试此操作以查看问题:console.log(parseFloat(6760/100*100));
通过四舍五入,您将获得正确的结果:
console.log(Math.round(parseFloat(value)*100000) < Math.round(parseFloat(max)*100000));
浮点数不是精确的数字,它们是数字的近似表示。