Почему это не дубликат этих замечательных статей SO?
Хотя два поста, ссылки на которые приведены в комментариях ниже, превосходны, я специально ищу информацию, которая поможет мне решить эту проблему.проблема в родном JS.Я знаю, что JS не должен быть первым выбором для сложной математики, но учитывая ограничение, что этот калькулятор предназначен для запуска в браузере, это инструмент, с которым я решил работать.
Фон
Я пытаюсь создать калькулятор с TypeScript без каких-либо библиотек (например, Big.js) и без использования конкатенации строк во внутренней логике калькулятора.
Примеры
Когда пользователь хочет ввести число 8,5:
- Нажата клавиша 8
- .нажата десятичная клавиша
- нажата клавиша 5
Математически я создаю это число на дисплее со следующим фрагментом:
8 + 5 * 0.1
Это работает, но еслиЯ продолжаю вниз, после десятичных разрядов, я сталкиваюсь с чем-то неожиданным:
8.5 + 5 * 0.01 // 8.55
8.55 + 5 * 0.001 // 8.555000000000001
Вопрос
Каков наилучший способ справиться с этим без преобразования числа в строку?Есть ли разумный способ наложить ограничение на точность калькулятора, чтобы он поддерживал точность только до стольких десятичных разрядов?
Спасибо за помощь!