0

为什么这不会给出预期的结果?

console.log(0.2+0.1); // gives 0.30000000000000004 
console.log(0.2+0.3); // gives 0.5
console.log(0.2+0.5); // gives 0.7
console.log(0.2+0.4); // gives 0.6000000000000001 

为什么firstandlast不会给出预期的结果?

4

2 回答 2

1

这是因为JavaScript使用了IEEE Standardfor Binary Floating-Point Arithmetic

一切floating point math都是这样,基于IEEE 754 standard. JavaScript 使用64-bit floating point representation,这与 Java 的double.

浮点数学是否损坏

于 2013-03-25T12:17:11.720 回答
0

试试看.toFixed()。这个方法格式化一个小数点右边有特定位数的数字。

console.log((0.2 + 0.1).toFixed(1)); // gives 0.3
console.log((0.2 + 0.3).toFixed(1)); // gives 0.5
console.log((0.2 + 0.5).toFixed(1)); // gives 0.7
console.log((0.2 + 0.4).toFixed(1)); // gives 0.6
于 2013-03-25T12:20:35.280 回答