添加整数javascript,double float

时间:2017-08-22 13:12:19

标签: javascript

所以我在这里读到了这个答案: Is floating point math broken?

因为JS中的每个数字都是双浮点数0.1 + 0.2,例如不等于0.3。

但我不明白为什么整数都不会发生?为什么然后1 + 2总是等于3等。似乎像1或2这样的整数类似于0.1和0.2在二进制64中没有完美的表示,所以他们的数学有时也应该破坏但是从未发生过。

为什么?

2 个答案:

答案 0 :(得分:2)

  

但我不明白为什么整数都不会发生?

确实如此,在达到IEEE-754格式的极限之前,整数必须非常大:

script: mvn clean package -DskipTests=true

答案 1 :(得分:0)

浮点格式,例如IEEE-754本质上是一个表达式,用于将值描述如下:

value := sign * mantissa * 2 ^ exponent

尾数是各种大小的整数。对于四字节浮点,尾数是24位,对于八字节浮点,尾数是48位。如果指数为0,则表达式的值仅由符号和尾数确定。事实上,这是整数由JavaScript表示的方式。

似乎让大多数人感到意外的是由于基数2指数而不是基数10.我们接受,在基数10中,如果没有无穷数,则不能精确地表示1/3或2/3的结果数字或接受舍入误差。同样,基数2中的分数也有类似的问题。不幸的是,对于我们的基础10心态,这些分数通常涉及10的负幂。