Javascript将小数添加到数字

时间:2011-11-02 01:33:18

标签: javascript

为什么会发生这种情况:

window.onload = function(){
    var bob=new Number(1);  
    for (var i=0; i<8 ;i++){        
        bob=Number(bob+1.1)             
    }

}

通知: 2.1

3.2

4.300000000000001

5.4

6.5

7.6

8.7

9.799999999999999

4 个答案:

答案 0 :(得分:0)

因为在Javascript中,“数字”默认为浮点数。甚至“我”;-)当然还有“鲍勃”。

浮点数是近似值

如果需要,可以使用“floor()”和“ceil()”

PS: 您还可以使用parseInt()将float转换为int:

parseInt (4.33) // Result = 4

或round():

round (3.2 + 1.1) // 4.3, not 4.300000000000001

答案 1 :(得分:0)

因为javascript Number实际上是双精度浮点数:

来自规范:

4.3.19
 Number value
  primitive value corresponding to a double-precision
  64-bit binary format IEEE 754 value

答案 2 :(得分:0)

这是四舍五入的问题。 4.3在二进制文件中没有确切的表示。

如何在JavaScript中存储确切的数字实际上是特定于实现的,但它始终是一个二进制浮点数。

修改

看起来我的信息有点过时了。该标准现在指定 doubleprecision 64位格式IEEE 754值

链接:

答案 3 :(得分:0)

问题与在base(2)上工作的计算机如何计算base(10)算术有关。有很多文章解释了细微差别。

如果你还没有解决问题,每当你使用浮点数时,你也应该用适当的函数按下输出。

我通常使用number.toFixed(),它将四舍五入到适当的小数位数。