use*_*420 10 javascript multiplying
我有:
var a = 0.0532;
var b = a * 100;
Run Code Online (Sandbox Code Playgroud)
b应该返回5.32但是它返回5.319999999999999.我该如何解决?
JSFiddle:http: //jsfiddle.net/9f2K8/
yas*_*hhy 11
你应该使用 .toFixed()
var a = 0.0532;
var b = a * 100;
b.toFixed(2); //specify number of decimals to be displayed
Run Code Online (Sandbox Code Playgroud)
sle*_*ica 10
这不是错误。
Javascript 试图5.32尽可能精确地表示。由于计算机没有无限精度,它会选择最接近的数字:5.319999999999999。
如果您的问题在于数值运算,您应该能够毫无问题地添加/乘以/等这些数字。它们非常接近预期的数字,以至于结果的误差范围可以忽略不计。
如果您的问题在于比较数字,常见的方法是放弃==并使用定义的误差幅度进行比较。例如:
// Two previously obtained instances of the "same" number:
a = 5.32
b = 5.319999999999999
// Don't do this:
if (a == b) {}
// Do this instead (hide it in a function):
margin = 0.000001
if (Math.abs(a - b) < margin) {}
Run Code Online (Sandbox Code Playgroud)
如果您的问题是 visual,您可以使用toFixed()创建一个圆形的人类可读字符串:
number = 123.4567
number.toFixed(2)
> '123.46'
Run Code Online (Sandbox Code Playgroud)