parseInt(1.164 * 100000) === 116399
我知道最大小数位数是5.有没有办法确保删除所有舍入错误?
编辑:我得到了一些投票,所以我想更多地澄清这个问题
我知道最大小数是5,因为我知道数据库不可能返回超过5位小数的浮点数
不涉及任何字符串。这是一个浮动。
我不想使用精度库,因为它太重了,不能包含一个库来修复前端的小bug。
我想知道我是否使用Math.round并且仍然会遇到问题。例如,这里的错误是1.164变为1.16399999(所以我可以通过四舍五入来解决问题)但是1.164可能会变成1.6400000001。在这种情况下,如果我向上舍入,将其四舍五入到116401。
答案 0 :(得分:0)
使用Math.round()
:
Math.round(1.164 * 100000)
它会给你116400
。
答案 1 :(得分:0)
是的,有办法确保删除所有“舍入错误”。
使用其他语言。
作为提及的评论者,请使用定点或高精度库。
使用新的(不存在的)JS实现,它以不同的方式表示数字,例如Crockford的“DEC64”提案;见https://github.com/douglascrockford/DEC64/。