JavaScript Как вычислить строковое значение с 18 знаками после запятой

Я хочу рассчитать 1538422.986611792949856002 - 1

Ожидаемое значение - 1538421,986611792949856002 (точка показывает 18 десятичных знаков).

Я думаю, мне нужно преобразовать эти два числа в строку, поскольку такие функции, как parseFloat, Number, не показывают 18 десятичных знаков и вычитают эти две строки ??

ярлык Вычисляет строковые значения, но сохраняет 18 десятичных знаков.

Вы можете попробовать какую-нибудь библиотеку Большой десятичный.

Ricky Mo 31.10.2018 04:22
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
89
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

eval("1538422.986611792949856002 - 1").toFixed(18)

Я пробовал это в console.info, и результат был 1538421.986611793050542474. а не 1538421.986611792949856002. Это почему?

Mijeong Won 31.10.2018 05:58

из-за проблемы с плавающей запятой в компьютере. en.wikipedia.org/wiki/…stackoverflow.com/questions/963873/…

Biplab Malakar 31.10.2018 06:02

Блин, нет возможности вычислить чтобы увидеть выход 1538421.986611792949856002 то ??? Я не хочу использовать библиотеку

Mijeong Won 31.10.2018 06:13

Нет, вы не можете получить именно тот результат, который хотите, но вы можете получить приблизительный результат с помощью Math.fround (eval ("1538422.986611792949856002 - 1")). ToFixed (18)

Biplab Malakar 31.10.2018 06:17

Вы можете решить эту проблему, разделив число на две части, а не на плавающую часть. И выполните операцию между плавающей частью num1, num2 и неплавающей частью num1, num2. Затем объедините результат.

Biplab Malakar 31.10.2018 06:27

Вы должны показать, как на самом деле решить, И, возможно, добавить все эти комментарии к ответу. В его нынешнем виде без комментариев он не дает точного ответа.

Mark Schultheiss 31.10.2018 12:04
Ответ принят как подходящий

Мне помог Locutus, который стремится ассимилировать стандартные библиотеки других языков с JavaScript.

Я использовал bcsub для расчета 1538422.986611792949856002 - 1. Функция php преобразует число в строку, чтобы мы могли избежать проблемы с плавающей запятой на компьютере.

Вы можете найти дополнительную информацию здесь.

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