Javascript

时间:2015-12-24 16:54:48

标签: javascript

我已经读过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

1 个答案:

答案 0 :(得分:0)

在第二个示例aNum返回0.30000000000000004bNum返回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);