Вопрос

Это код Jquery:

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

}

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

Это было полезно?

Решение

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

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

или:

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

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

Другие советы

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

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

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

Javascript имеет несколько довольно серьезных проблем с плавающей запятой.Попробуйте как-нибудь набрать 0.1 + 0.2 в своей консоли Firebug, чтобы немного развлечься.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top