克服Javascript浮点问题

时间:2014-10-15 02:03:59

标签: javascript

parseInt(1.164 * 100000) === 116399

我知道最大小数位数是5.有没有办法确保删除所有舍入错误?

编辑:我得到了一些投票,所以我想更多地澄清这个问题

  1. 我知道最大小数是5,因为我知道数据库不可能返回超过5位小数的浮点数

  2. 不涉及任何字符串。这是一个浮动。

  3. 我不想使用精度库,因为它太重了,不能包含一个库来修复前端的小bug。

  4. 我想知道我是否使用Math.round并且仍然会遇到问题。例如,这里的错误是1.164变为1.16399999(所以我可以通过四舍五入来解决问题)但是1.164可能会变成1.6400000001。在这种情况下,如果我向上舍入,将其四舍五入到116401。

2 个答案:

答案 0 :(得分:0)

使用Math.round()

Math.round(1.164 * 100000)

它会给你116400

答案 1 :(得分:0)

是的,有办法确保删除所有“舍入错误”。

  1. 使用其他语言。

  2. 作为提及的评论者,请使用定点或高精度库。

  3. 使用新的(不存在的)JS实现,它以不同的方式表示数字,例如Crockford的“DEC64”提案;见https://github.com/douglascrockford/DEC64/