3

我在这里有一个小提琴:http: //jsfiddle.net/94wQJ/1/ - 但可能有人可以通过查看下面的建议。

<button type="button" id="allocate">Calc</button>

 $('#allocate').click(function () {
     val1 = 25.00;
     val2 = 16.37;
     val3 = val1-val2;
     alert(val3);
 });

25 - 16.37 = 8.63 - 但是,val3 的警报 = 8.62999999999

为什么不准确?

谢谢,

标记

4

4 回答 4

5

尝试在此处使用toFixed更多信息

val3.toFixed(2)

演示小提琴

于 2013-09-27T08:30:28.527 回答
3

为什么不准确?

这是浮点数学是否损坏的副本?,但要回答您的具体问题:浮点数通常以 2 为基数存储数字,因为它允许比使用以 10 为基数更准确地存储更多数字,但代价是即使数字很小也无法准确存储所有以 10 为基数的数字小数位数。

于 2013-09-27T08:41:39.243 回答
1

许多小数部分不能精确地用二进制表示。

利用.toFixed(2)

于 2013-09-27T08:27:31.043 回答
1

请检查这个

val3 = Math.round(val3*100)/100;

I have update here http://jsfiddle.net/94wQJ/7/

于 2013-09-27T08:35:08.883 回答