Jquery отображает 20,099999999999998 долларов вместо 20,1 долларов - PullRequest
1 голос
/ 19 ноября 2009

Это код Jquery:

  function Totalprice()
{
    var unitprice=$('#unitpay').val();
    var quota=$('#readers').val();
    var totalprice=unitprice*quota;
    $('#totalprice').text('$'+totalprice);

}

Когда значение читателей равно 67, а unitpay равно 0,3, он рассчитывает общую стоимость и отображает $ 20.099999999999998, а не $ 20,1. В чем дело? Если я хочу, чтобы он отображал $ 20,1 вместо $ 20,099999999999998, как я могу переписать код?

Ответы [ 4 ]

6 голосов
/ 19 ноября 2009

Как насчет этого:

$('#totalprice').text('$'+totalprice.toFixed(1));

или

$('#totalprice').text('$'+totalprice.toFixed(2));

, чтобы показать его как фактическую сумму в долларах.

5 голосов
/ 19 ноября 2009

Как отметили ваши восторженные комментаторы, это ошибка с плавающей запятой . Быстрое и простое решение - использовать метод округления, например toFixed ().

3 голосов
/ 19 ноября 2009

Просто используйте .toFixed(2). (ссылка)

Проблема в том, что компьютеры не могут точно представлять некоторые числа (они конечны и работают в двоичном формате), поэтому происходит такое.

0 голосов
/ 19 ноября 2009

Javascript имеет довольно серьезные проблемы с плавающей запятой. Попробуйте как-нибудь набрать 0,1 + 0,2 в консоли Firebug.

Это не проблема с jQuery. Как упоминалось выше, используйте toFixed ().

...