Почему parseInt(0.0000005) JavaScript печатает «5»?

Почему parseInt(0.0000005) в JavaScript печатает 5? Удивительный вопрос!

Предисловие

Недавно у меня возникла странная проблема при разработке проекта, parseInt (0.0000005) === 5😱. Обычно вывод 0 правильный, но почему 5? Давайте вместе изучим эту проблему.

1. Когда вы используете parseInt?

Прежде всего, когда вы обычно используете parseInt? В большинстве случаев мы используем его для разбора строки и возврата ее целой части . С этим вопросом давайте взглянем на метод parseInt.

2. Кое-что о parseInt

Функция parseInt(string, radix) анализирует строковый аргумент и возвращает целое число по указанной системе счисления (основание в математических системах счисления).

Синтаксис

parseInt(string)
parseInt(string, radix)

parseInt('0.5') // 0
parseInt('0.5') // 0
parseInt('0.05') // 0
parseInt('0.005') // 0
parseInt('0.0005') // 0
parseInt('0.00005') // 0
parseInt('0.000005') // 0
parseInt('015') // 15
parseInt('015', 8) // 13
parseInt('15px', 10) // 15

Когда первым параметром parseInt является число, как оно анализируется?

Правда parseInt(0.0000005) === 5тоже здесь...

3.1. Первым шагом является преобразование числа вstring

Давайте проверим значения на основе строк, используя функцию String, чтобы увидеть, что является результатом для каждого из них:

String(0.5);      // => '0.5'
String(0.05);     // => '0.05'
String(0.005);    // => '0.005'
String(0.0005);   // => '0.0005' 
String(0.00005);  // => '0.00005'
String(0.000005); // => '0.000005'
String(0.0000005); // => '5e-7' pay attention here

Итак, это означает, что когда мы используем parseInt(0.0000005), оно равно parseInt('5e-7')и основано на определении:

parseInt может интерпретировать только начальную часть строки как целочисленное значение; он игнорирует любые кодовые единицы, которые не могут быть интерпретированы как часть записи целого числа, и не дается никаких указаний на то, что такие кодовые единицы были проигнорированы.

parseInt(0.0000005)
parseInt('5e-7') // 5

4. Как безопасно получить целую часть числа с плавающей запятой?

Рекомендуется использовать следующую функцию Math.floor():

Math.floor(0.5);      // => 0
Math.floor(0.05);     // => 0
Math.floor(0.005);    // => 0
Math.floor(0.0005);   // => 0
Math.floor(0.00005);  // => 0
Math.floor(0.000005); // => 0
Math.floor(0.0000005); // => 0

Теперь вы можете объяснить, почему parseInt(99999999999999999999999999)он равен 1?

Спасибо за чтение.

Больше контента на PlainEnglish.io . Подпишитесь на нашу бесплатную еженедельную рассылку . Следите за нами в Twitter и LinkedIn . Присоединяйтесь к нашему сообществу Discord .

Suggested posts

Преследование христиан: преступление на почве ненависти, о котором мы не говорим

Забудьте об исламофобии: христиане (и евреи) являются главными жертвами преступлений на почве религиозной ненависти.

Преследование христиан: преступление на почве ненависти, о котором мы не говорим

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

«Обнаруженная Марианская впадина: раскрытие ужасающих скрытых истин бездны»

«Обнаруженная Марианская впадина: раскрытие ужасающих скрытых истин бездны»

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

Related posts

Сольное выступление рыжеволосой девушки

По заданию Хайдена Кэти снимает, как она мастурбирует.

Сольное выступление рыжеволосой девушки

Было уже за полночь, когда Хейден отвез Кэти обратно в общежитие колледжа после их совместного вечера. У нее был ранний урок утром, и у нее не было другой смены одежды после того, как она осталась с ним прошлой ночью.

Что делает подкаст влиятельным?

Что делает подкаст влиятельным?

На прошлой неделе я заметил пресс-релиз, разосланный через PressGazette (новостной веб-сайт британских СМИ). В статье сообщалось, что Acast, скандинавская компания по размещению и рекламе подкастов, возглавит консорциум «вероятно, самых влиятельных» издателей подкастинга.

Убийство Джордана Нили и проблема «патриотического» расизма

Могут ли США сделать важный шаг и не приравнивать расистское поведение к тому, чтобы быть хорошим американцем?

Убийство Джордана Нили и проблема «патриотического» расизма

[Предупреждение: в этом эссе есть снимки экрана, на которых люди восхваляют убийцу Джордана Нили.] Сотрудники правоохранительных органов наконец — и, возможно, неохотно — предъявили обвинение в этом убийстве Дэниелу Пенни, человеку, который душил Джордана Нили, пока тот не умер.

Два года в дизайне: хорошее, плохое и уродливое…

Два года в дизайне: хорошее, плохое и уродливое…

«Привет, Siri, включи Me Dive Оливии Дин». В мае 2021 года я начал стажировку в Future Academy Africa в Акуре, Нигерия.