我已经读过Javascript中没有整数类型,只有浮点双精度(64位)类型。据我所知,因为即使比较整数,也会引入一些浮点算术错误。
但是,我不明白为什么下面的三个比较会产生不同的结果:
var aInt = 1 + 2;
var bInt = 3;
console.log("Comparing integers: ");
console.log(aInt === bInt); // Prints true
var aNum = 0.1 + 0.2;
var bNum = 0.3;
console.log("Comparing 0.1 + 0.2 === 0.3: ");
console.log(aNum === bNum); // Prints false
var aNum2 = 1.0 + 2.0;
var bNum2 = 3.0;
console.log("Comparing 1.0 + 2.0 === 3.0: ");
console.log(aNum2 === bNum2); // Prints true
我原本期望将上述所有比较评估为false
。
答案 0 :(得分:0)
在第二个示例aNum
返回0.30000000000000004
,bNum
返回0.3
要在严格的相等比较下返回true
,请尝试使用.toFixed()
,Number()
var aNum = 0.1 + 0.2;
var bNum = 0.3;
console.log(Number(aNum.toFixed(1)), bNum);
console.log(Number(aNum.toFixed(1)) === bNum);