Я хочу рассчитать 1538422.986611792949856002 - 1
Ожидаемое значение - 1538421,986611792949856002 (точка показывает 18 десятичных знаков).
Я думаю, мне нужно преобразовать эти два числа в строку, поскольку такие функции, как parseFloat, Number, не показывают 18 десятичных знаков и вычитают эти две строки ??
ярлык Вычисляет строковые значения, но сохраняет 18 десятичных знаков.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


eval("1538422.986611792949856002 - 1").toFixed(18)
Я пробовал это в console.info, и результат был 1538421.986611793050542474. а не 1538421.986611792949856002. Это почему?
из-за проблемы с плавающей запятой в компьютере. en.wikipedia.org/wiki/…stackoverflow.com/questions/963873/…
Блин, нет возможности вычислить чтобы увидеть выход 1538421.986611792949856002 то ??? Я не хочу использовать библиотеку
Нет, вы не можете получить именно тот результат, который хотите, но вы можете получить приблизительный результат с помощью Math.fround (eval ("1538422.986611792949856002 - 1")). ToFixed (18)
Вы можете решить эту проблему, разделив число на две части, а не на плавающую часть. И выполните операцию между плавающей частью num1, num2 и неплавающей частью num1, num2. Затем объедините результат.
Вы должны показать, как на самом деле решить, И, возможно, добавить все эти комментарии к ответу. В его нынешнем виде без комментариев он не дает точного ответа.
Мне помог Locutus, который стремится ассимилировать стандартные библиотеки других языков с JavaScript.
Я использовал bcsub для расчета 1538422.986611792949856002 - 1. Функция php преобразует число в строку, чтобы мы могли избежать проблемы с плавающей запятой на компьютере.
Вы можете найти дополнительную информацию здесь.
Вы можете попробовать какую-нибудь библиотеку Большой десятичный.