Javascript浮动比较

时间:2014-02-10 23:28:38

标签: javascript floating-point numbers comparison

我在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?

2 个答案:

答案 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));

浮点数不是精确的数字,它们是数字的近似表示。