JavaScript. Метод toFixed

Почему метод toFixed округляет дробную часть по-разному в зависимости от того какое целое число?

let num1 = 5.145;
let num2 = 3.145;

console.log(num1.toFixed(2));
console.log(num2.toFixed(2));


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Вещественные числа не умеют хранить точно десятичную дробь X.145. Хранится самое близкое значение в виде двоичной дроби. Иногда двоичная дробь немного больше десятичной, иногда меньше. Да, это зависит от целой части числа и влияет на округление. Вот что получается в компьютере:

$ node
> (3.145).toFixed(60)
'3.145000000000000017763568394002504646778106689453125000000000'
> (5.145).toFixed(60)
'5.144999999999999573674358543939888477325439453125000000000000'
→ Ссылка