Вернуться к уроку

Почему 6.35.toFixed(1) == 6.3?

важность: 4

В математике принято, что 5 округляется вверх, например:

alert( 1.5.toFixed(0) ); // 2
alert( 1.35.toFixed(1) ); // 1.4

Но почему в примере ниже 6.35 округляется до 6.3?

alert( 6.35.toFixed(1) ); // 6.3

Во внутреннем двоичном представлении 6.35 является бесконечной двоичной дробью. Хранится она с потерей точности… А впрочем, посмотрим сами:

alert( 6.35.toFixed(20) ); // 6.34999999999999964473

Интерпретатор видит число как 6.34..., поэтому и округляет вниз.