Как стать автором
Обновить

Комментарии 17

Вот еще загадка (заставила поматюкаться сегодня):

( 0.045 ).toFixed( 2 ) == ( 0.035 ).toFixed( 2 )
округление к ближайшему четному называется.
А тогда почему
( 0.045 ).toFixed( 2 ) // 0.04
и
( 0.065 ).toFixed( 2 ) // 0.07
?
Числа хранятся согласно IEEE 754. Об этом не раз уже говорилось на хабре.
Нда, я забыл, это ж JS.
Тут просто «нативное» округление.
Ради интересу взгляните на
(0.005).toFixed(20)
(0.015).toFixed(20)
(0.025).toFixed(20)
(0.035).toFixed(20)
(0.045).toFixed(20)
(0.055).toFixed(20)
а вы вот этим её

var n = 100;
( Math.ceil( 0.045 * n ) / n ).toFixed( 2 ) == ( Math.ceil( 0.035 * n ) / n ).toFixed( 2 )
НЛО прилетело и опубликовало эту надпись здесь
Экспериментируя с +- из первого примера получил

"3" +-+ "1" // = "3-1"

В принципе понятно почему (= «3» + -1 = «3-1»), но выглядит еще разрушительнее.
Стесняюсь спросить, это вы просто wtfjs.com/ пересказали?
Большая часть примеров оттуда. Я этого не скрываю и даже в метках указал. В качестве цели статьи я ставил разбор логики поведения. По-моему, простой просмотр «смотри какая хрень в JavaScript» не несет пользы, полезно понять почему именно так.
Еще загадка JavaScript:
0.57*100

Сколько получится?
вам тоже смотреть на
(0.57).toFixed(20)
Оу, приходите к нам в гости, мы на работе иногда так развлекаемся командой. Делаем встречи в стиле FunJS.
У нас уже и своих загадок набралась куча. И, кстати, не только в JS.
В 10 задачке Хабрапарсер мне подсказал ответ (я читер).
По подсветке синтаксиса выглядит так, как-будто никакого деления нет, есть умножение 1-цы на строку.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории