JavaScript笔记(三)

3.1.4 Binary Floating-Point and Rounding Errors

There are infinitely many real numbers, but only a finite number of them (18437736874454810627, to be exact) can be represented exactly by the JavaScript floating-point format. This means that when you’re working with real numbers in JavaScript, the representation of the number will often be an approximation of the actual number.

var x = .3 - .2;  // thirty cents minus 20 cents
var y = .2 - .1;  // twenty cents minus 10 cents
x == y            // => false: the two values are not the same!
x == .1           // => false: .3-.2 is not equal to .1
y == .1           // => true: .2-.1 is equal to .1

3.1.4 二进制浮点数和四舍五入错误

实数有无数个,但JavaScript通过浮点数的形式只能表示其中有限的个数(确切地说是18437736874454810627个)。也就是说,当在JavaScript中使用实数的时候,常常只是真实值的一个近似表示。

var x = .3 - .2;  // 30美分减去20美分
var y = .2 - .1;  // 20美分减去10美分
x == y            // => false: 两值不相等!
x == .1           // => false: .3-.2 不等于 .1
y == .1           // => true: .2-.1 is 等于 .1

来源:《JavaScript权威指南》--3.1.4 二进制浮点数和四舍五入错误 37页-38页