Удаление десятичной части чисел в JavaScript: методы

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы удалить дробную часть числа в JavaScript, используйте функцию Math.trunc(). Этот метод наиболее оптимальный, хотя и существуют другие подходы:

JS
Скопировать код
let number = 123.456;
let noDecimals = Math.trunc(number); // 123, "Привет, целая часть, тебе не было нужно дробное продолжение."
Кинга Идем в IT: пошаговый план для смены профессии

Отсечение дробной части в JavaScript

Помимо Math.trunc(), в JavaScript существует несколько других подходов для избавления от десятичных знаков. Вот основные из них и их характеристики:

МетодОписаниеВозвращаемый результат
Math.trunc(number)Простое отсечение дробной части.Number
~~numberОператор с высокой скоростью выполнения.Number
parseInt(number)Возвращает целый компонент числа. Прост и понятен.Number
Math.floor(number)Округляет значение вниз.Number
Math.round(number)Производит округление до ближайшего целого. Точен и объективен.Number

Однако стоит помнить, что побитовые операторы (~~) имеют ограничение на 32 бита. Поэтому в работе с большими числами следует проявлять осторожность!

Округление и точность

Арифметика с плавающей точкой порой может поставить в тупик, как, например, Math.round(), округляя число на первый взгляд неправильно. Чтобы избежать подобных неожиданностей, используйте Math.floor() для отрицательных и Math.ceil() для положительных значений.

Полифил для Math.trunc()

Если ваш браузер не поддерживает Math.trunc(), вы можете воспользоваться следующим полифилом:

JS
Скопировать код
if (!Math.trunc) {
  Math.trunc = function(v) {
    return v < 0 ? Math.ceil(v) : Math.floor(v);
  };
}

Строковое представление числа

Если требуется преобразовать число без десятичных знаков в строку, следует использовать Number.toFixed(0). Но помимо этого вам возможно потребуется преобразование обратно в число:

JS
Скопировать код
let number = 123.456;
let noDecimalsString = number.toFixed(0); // "123", "Теперь это строка, несущая в себе число."
let noDecimalsNumber = Number(noDecimalsString); // 123 – Возвращение к числовому формату

Визуализация

Визуализируем процесс отсечения дробной части числа:

Markdown
Скопировать код
До: 🌳 6.35 
После: 🌲 6

Здесь Math.trunc функционирует как садовые ножницы ✂️ – отсекают лишнее и оставляют только целое число.

JS
Скопировать код
let number = 6.35;
number = Math.trunc(number); // 🌳 -> 🌲

Арифметика и точность

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

Производительность

С точки зрения скорости исполнения, побитовые операторы, например, ~~, выступают как быстрые инструменты. Они помогут вам быстро отсечь дробную часть, но в случае, если важна точность, предпочтительнее использовать методы Math.

Полезные материалы

  1. Math.floor() – JavaScript | MDN — Подробнее о Math.floor(), помогающем в округлении числа в меньшую сторону.
  2. Format number to always show 2 decimal places — Узнайте, как ограничить число заданным количеством десятичных знаков.
  3. parseInt() – JavaScript | MDN — Изучите документацию по преобразованию строки в целое число с помощью parseInt().
  4. Number.prototype.toFixed() – JavaScript | MDN — Узнайте больше об использовании Number.toFixed() для форматирования чисел.
  5. JavaScript Bitwise — Познакомьтесь с побитовыми операциями.
  6. Math.round() – JavaScript | MDN — Научитесь применять Math.round() для округления чисел.
  7. What does a tilde do when it precedes an expression? – Stack Overflow — Разберитесь в интересной детали использования тильды в JavaScript.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой метод в JavaScript используется для удаления дробной части числа?
1 / 5