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

152
06 августа 2018, 20:20

Пишет

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

Но я не понимаю почему 1.35.toFixed(1) == 1.4 Такая фигня только с 6.35? Почему к примеру 1.35 не является бесконечной двоичною дробью ???

Answer 1

Потому что будучи записанной в двоичном представлении, 6.35 будет "округлена" до ближайшего представимого числа (32-битного в этом примере) в формате IEEE-754 - 01000000110010110011001100110011, что при обратном преобразовании даст нам 6.349999904632568359375, а 1.35, соответственно 00111111101011001100110011001101 и 1.35000002384185791015625

toFixed(1) же делает простое округление, 6.349 до 6.3, а 1.35 до 1.4

P.S. Вот тут есть онлайн просмотрщик представлений чисел: https://www.h-schmidt.net/FloatConverter/IEEE754.html

READ ALSO
Как добавить значение из переменной в объект data для выполнения ajax запроса?

Как добавить значение из переменной в объект data для выполнения ajax запроса?

друзья! Для передачи в ajax запрос собираю данные из формы методом serializeArrayКак можно добавить значение из переменной, не связанной с формой,...

186
Сапер на JavaScript

Сапер на JavaScript

создаю сапера на JS, есть двумерный массив заполненый нулями и единицами ,1 это мина, нужно создать массив заполненый числами количеством мин...

181
Как подгружать системные шрифты?

Как подгружать системные шрифты?

Как подгружать шрифты установленные в системе на примере сайта https://wordmarkit

135