Javascript浮动计算错误

时间:2013-02-06 11:22:28

标签: javascript

这里我的Web应用程序出现了问题(在chrome和firefox以及nodejs上测试过):

当我跑(1.2 - 1)时,它返回0.19999999999999996。

有谁知道为什么?

2 个答案:

答案 0 :(得分:2)

你可以解决你的问题: (1.2 - 1).toFixed(1)* 1 // 0.2

答案 1 :(得分:1)

你可以使用javascript更复杂的toFixed方法:

数字方法

在JavaScript 1.5中实现

ECMAScript版ECMAScript第3版

<强>语法

number.toFixed([digits])

<强>参数

<强>位 小数点后出现的位数;这可以是0到20之间的值,包括0和20,并且实现可以可选地支持更大范围的值。如果省略此参数,则将其视为0.

<强>返回

不使用指数表示法且在小数位后面具有正确位数的数字的字符串表示形式。如有必要,数字将四舍五入,如果需要,小数部分用零填充,以使其具有指定的长度。如果number大于1e + 21,则此方法只调用Number.toString()并以指数表示法返回一个字符串。

<强>抛出

<强>的RangeError 如果数字太小或太大。 0到20之间的值(包括0和20)不会导致RangeError。允许实现也支持更大和更小的值。的类型错误 如果在不是Number的对象上调用此方法。

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toFixed