Удаление десятичной части чисел в JavaScript: методы
Быстрый ответ
Чтобы удалить дробную часть числа в JavaScript, используйте функцию Math.trunc()
. Этот метод наиболее оптимальный, хотя и существуют другие подходы:
let number = 123.456;
let noDecimals = Math.trunc(number); // 123, "Привет, целая часть, тебе не было нужно дробное продолжение."
Отсечение дробной части в 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()
, вы можете воспользоваться следующим полифилом:
if (!Math.trunc) {
Math.trunc = function(v) {
return v < 0 ? Math.ceil(v) : Math.floor(v);
};
}
Строковое представление числа
Если требуется преобразовать число без десятичных знаков в строку, следует использовать Number.toFixed(0)
. Но помимо этого вам возможно потребуется преобразование обратно в число:
let number = 123.456;
let noDecimalsString = number.toFixed(0); // "123", "Теперь это строка, несущая в себе число."
let noDecimalsNumber = Number(noDecimalsString); // 123 – Возвращение к числовому формату
Визуализация
Визуализируем процесс отсечения дробной части числа:
До: 🌳 6.35
После: 🌲 6
Здесь Math.trunc функционирует как садовые ножницы ✂️
– отсекают лишнее и оставляют только целое число.
let number = 6.35;
number = Math.trunc(number); // 🌳 -> 🌲
Арифметика и точность
Арифметика с плавающей точкой всегда представляет интерес, но она может порождать проблемы с точностью. Учитывайте это, особенно при умножении числа на 10 в степени перед его округлением. Важно осознавать, как числа представлены в машинной арифметике.
Производительность
С точки зрения скорости исполнения, побитовые операторы, например, ~~
, выступают как быстрые инструменты. Они помогут вам быстро отсечь дробную часть, но в случае, если важна точность, предпочтительнее использовать методы Math
.
Полезные материалы
- Math.floor() – JavaScript | MDN — Подробнее о
Math.floor()
, помогающем в округлении числа в меньшую сторону. - Format number to always show 2 decimal places — Узнайте, как ограничить число заданным количеством десятичных знаков.
- parseInt() – JavaScript | MDN — Изучите документацию по преобразованию строки в целое число с помощью
parseInt()
. - Number.prototype.toFixed() – JavaScript | MDN — Узнайте больше об использовании
Number.toFixed()
для форматирования чисел. - JavaScript Bitwise — Познакомьтесь с побитовыми операциями.
- Math.round() – JavaScript | MDN — Научитесь применять
Math.round()
для округления чисел. - What does a tilde do when it precedes an expression? – Stack Overflow — Разберитесь в интересной детали использования тильды в JavaScript.