Почему (-2.4492935982947064e-16) .toFixed (5) равно "-0.00000"? - PullRequest
1 голос
/ 05 июня 2019

Учитывая этот код:

const value = 1;
Math.sin(2 * Math.PI * value).toFixed(5);

Почему это возвращает "-0.00000", когда значение перед .toFixed(5) равно -2.4492935982947064e-16?

Ответы [ 3 ]

3 голосов
/ 05 июня 2019

Номер указан в научной записи.

E-16 означает, что слева от номера находятся 16 0.

-2.4492935982947064e-16

действительно

-0.00000000000000024492935982947064

Когда вы запускаете toFixed (5), вы получаете 5 десятичных знаков, которые все равны 0.

0 голосов
/ 05 июня 2019

-2.4492935982947064e-16 равно -2.4492935982947064 * Math.pow(10,-16), поэтому 5 знаков после запятой недостаточно, чтобы увидеть что-то отличное от 0

const value = 1;
let result = Math.sin(2 * Math.PI * value);
console.log(result)
console.log(result.toFixed(20))
console.log(result.toFixed(5))
0 голосов
/ 05 июня 2019

Число, которое вы представили -2.4492935982947064e-16 в научной нотации. Это число будет эквивалентно -2.4492935982947064 × 10^-16, что будет точно -0.00000000000000024492935982947064 после его расширения.

...