Как бороться с переполнением в операторе деления - PullRequest
0 голосов
/ 17 января 2019

Это моя проблема: У меня есть число в виде десятичного числа, как: Var A = 0.5556 Я хотел бы умножить a на 86400: var b = a * 86400 = 48003.84; После этого я хотел бы разделить b с 86400: var c = b / 86400 = 0.5556018518518518 Результат c не равен значению a. Мой вопрос - как сделать значение c равным значению a в javascript. Может ли кто-нибудь помочь мне решить эту проблему.

Javascript

а = 0,5556;

b = a * 86400

Ожидается: c = b / 86400 = a

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Вы сталкиваетесь с ограничениями представлений точек фиксации и арифметики. Обычно, когда вы сравниваете числа с плавающей запятой, вы проверяете, находятся ли эти два числа в определенном диапазоне друг от друга.

если вы не против того, чтобы жертвовать эффективностью, вы можете использовать библиотеку для реализации плавающей запятой произвольной точности, например введите описание ссылки здесь

0 голосов
/ 17 января 2019

Если вы хотите получить точный вывод до определенного количества цифр после десятичной дроби, вы можете использовать метод toPrecision().

var a = 0.5556;
var b = (a * 86400).toPrecision(5);
var c = (b / 86400).toPrecision(5);

console.log(a)
...