Jquery отображает $ 20.09999999999998 вместо $ 20.1
-
21-09-2019 - |
Вопрос
Это код 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().