'-15.48' - '43'
刚刚在控制台中写了这个,结果如下:
-58.480000000000004
为什么会这样?如何才能获得正确的结果?
答案 0 :(得分:3)
因为所有floating point数学都是这样的,并且基于IEEE 754 standard。 JavaScript使用64位浮点表示,这与Java的double
相同。
要解决此问题,您可以尝试:
(-15.48 - 43).toFixed(2);
答案 1 :(得分:0)
使用:toFixed()
var num = 5.56789;
var n=num.toFixed(2);
result:5.57
答案 2 :(得分:0)
http://en.wikipedia.org/wiki/Machine_epsilon
人类以十进制数计算,机器大多使用二进制数。 10 == 2x5; 2和5是相互素数。然而,这个微不足道的事实有一个令人不快的后果。
典型的陷阱可能包括。
AVG := AVG + X[i];
种类的无限循环0 < X[i] < const
。如果循环运行的时间足够长,你会发现在某些时候AVG不再更改该值,所有来自mthatpoint的元素都会被丢弃。Value_1 == Value_2
之类的安全检查。对于理论数学来说,价值是相等的,对于真实的计算机而言,它们不是。