当我添加两个 1.001 和 0.001 的文本框值,然后我执行parseFloat
时,我得到 1.0019999999 。我想要 1.002 。你能救我吗?
答案 0 :(得分:26)
Javascript Number类具有toFixed()
功能,可以为您提供所需的功能。
所以你可以做parseFloat("1.0019999").toFixed(3)
,这会给你 1.002 。
参数(本例中为3)是小数点后显示的位数
答案 1 :(得分:10)
0.002无法准确表示为基数2。类似于1/3无法在基数10中表示的方式。
1/3 = 0.33333 ...回归。要在基数10中准确表示数字,您需要无限数量的十进制数字。
0.002是一个可以在基数10中准确表示的数字(如我们在这里看到的),但不是在计算机使用的基数2中。要准确地表示这个数字,需要无限数量的二进制数字。
答案 2 :(得分:6)
这是一个已知问题:请参阅accuraty problem 并最小化准确性问题:minimisation
答案 3 :(得分:6)
javascript方法Number.toFixed()
和Number.toPrecision()
可以在这里提供帮助,但they return a String
。可能的解决方案如下:
var x = parseFloat(parseFloat("1.0019999999").toPrecision(3));
答案 4 :(得分:0)
如果你想快速修复,你可以四舍五入到最接近的千分之一
Math.round((1.001 + 0.001)* 1000)/ 1000