​document.writeln(Math.floor(43.9));

在浏览器中产生43个。
​document.writeln(Math.floor(43.9999));​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

产生43
 ​document.writeln(Math.floor(43.999999999999));​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

再次43

然而,
    document.writeln(Math.floor(43.99999999999999));

产生44。

小数点后的9的魔数(Magic Number)似乎为15 *。

为什么是这样?

此外,Math.floor函数是否接受数字作为数字对象或数字值?

最佳答案

IEEE 754 double 二进制浮点格式(JavaScript在其Number类型中使用的格式)可为您提供15-17个有效十进制数字的精度。



资料来源:http://en.wikipedia.org/wiki/Double-precision_floating-point_format#IEEE_754_double-precision_binary_floating-point_format:_binary64

关于Javascript Math.floor函数失误还是实现谜团?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11958279/

10-12 22:42