代码之家  ›  专栏  ›  技术社区  ›  Mark

Javascript子字符串数字不准确-为什么[重复]

  •  3
  • Mark  · 技术社区  · 12 年前

    我这里有一把小提琴: 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 回复  |  直到 12 年前
        1
  •  5
  •   Community Mohan Dere    8 年前

    尝试使用 toFixed 更多 information here

    val3.toFixed(2)
    

    演示 Fiddle

        2
  •  3
  •   Community Mohan Dere    8 年前

    为什么它不准确?

    这是的副本 Is floating point math broken? ,但要回答您的具体问题:浮点数通常以2为基数存储数字,因为它可以比使用10为基数更准确地存储更多的数字,而代价是即使只有少量小数,也无法准确存储所有10为基数的数字。

        3
  •  1
  •   PSR    12 年前

    许多十进制分数不能用二进制精确表示。

    使用 .toFixed(2)

        4
  •  1
  •   hima    12 年前

    请检查一下

    val3=数学四舍五入(val3*100)/100;

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