Функция toFixed не дает ожидаемого вывода - PullRequest
0 голосов
/ 16 июня 2020

Почему toFixed() не работает должным образом в следующем случае? Какое решение?

Код:

var num = 5.56789;
var n = num.toFixed(16);
console.log(num)
console.log(n)

Ожидаемое значение n: 5.5678900000000000

Фактическое значение n: 5.5678900000000002

Примечание:

  1. Я рассмотрел все соответствующие вопросы о переполнении стека.
  2. Я понимаю, что это не дает ожидаемых результатов, потому что числа с плавающей запятой не могут быть идеально представлены в двоичном формате.
  3. Кто я ожидание - это библиотечная функция, которая фактически подтверждает вышеизложенное и генерирует ожидаемый результат.

1 Ответ

5 голосов
/ 16 июня 2020

Вы в значительной степени ответили на свой вопрос: javascript Number class - это 64-битное значение с плавающей запятой, а числа, о которых вы говорите, go превышают точность, разрешенную данными 64 битами. Чтобы обойти это ограничение, библиотека типа https://github.com/munrocket/double.js обеспечит вам точность до 128 бит.

...