Это выражение, с которым у меня возникают проблемы:
Math.round((Math.ceil((0.4 - 0.1 / 1000) / 0.1) - 1)) * 0.1
В Chrome и Firefox возвращается 0.30000000000000004.Это число необходимо вернуть в элемент <input type="number">
.Хотя Firefox достаточно умен, чтобы написать «0.3», Chrome представляет пользователю полную красоту неспособности JavaScript правильно выполнять математические операции.Излишне говорить, что это недопустимо с точки зрения пользователя.
Только я не могу найти способ заставить его работать правильно.Я знаю, что JavaScript очень плох в вычислениях, но должно быть решение.Меня почти не волнует, насколько это сложно, но пользователю нужно видеть «0,3», а не число с 16 десятичными знаками, когда шаг равен 0,1.
Я бы ожидал - и я частоиспользовал его - для Math.round(x / scale) * scale
чтобы вернуть число, которое правильно округлено до цифр lg (масштаба).Но теперь это стало проваливаться.
Какой магический код необходим, чтобы победить это злое заклинание?
PS: Пример шага 0.1.Это может быть все, что пожелает пользователь.Как 1, 10, 12, 0,25 или 0,5.