Что выведет в консоль parseInt(0.0000003)
Описание
На собеседовании задали такой вопрос:
— Что выведет в консоль
parseInt(0.000003)
?
"Ну, ясное дело." — 0! .
— Хорошо. А что выведетparseInt(0.0000003)
?
— А какая разница? 0!
Ответ убил:
— 3!
console.log(parseInt(0.0000003));
Почему?
Ответы (1 шт):
Для начала
Чтобы понять, как работает выражение, разберемся как работает parseInt
.
Функция parseInt
пытается разобрать целое число из СТРОКИ. Это ключевой момент.
Что происходит
Если передать не строковое значение как параметр, то произойдет автоматическая конвертация в строку, потом уже разбор.
Если конвертировать число 0.000003
в строку, получим "0.000003"
.
Если конвертировать число 0.0000003
в строку, получим... "3e-7"
. ¯\_(ツ)_/¯
Вот тут нюанс
По разряду слишком большие (≥ 10²¹) или слишком маленькие (≤ 10⁻⁷) числа при конвертации в строку переходят в экспоненциальный вид для более удобного чтения.
console.log(`${10 ** 20}\n${10 ** 21}`);
console.log(`${10 ** -6}\n${10 ** -7}`);
При попытке разобрать "0.000003"
в целое число, берется первая группа цифр, из которой можно получить целое число - 0
.
При попытке разобрать "3e-7"
- 3
.