Trunc: примеры (JAVASCRIPT)
trunc(number): numberОсновы функции Math.trunc
Метод Math.trunc() является встроенной функцией в JavaScript, которая возвращает целую часть числа, удаляя дробную часть. Эта функция не выполняет округление, а просто отбрасывает десятичную часть.
Использование:
Функция применяется, когда требуется получить целую часть числа без дробного остатка. Это полезно в финансовых расчетах, при работе с индексами массива, в алгоритмах, требующих целочисленных значений.
Аргументы:
Функция принимает один обязательный аргумент:
x- число, из которого требуется извлечь целую часть. Если аргумент не является числом, он будет автоматически преобразован к числу.
Возвращаемое значение:
Функция возвращает целую часть числа. Для положительных чисел результат аналогичен Math.floor(), для отрицательных - Math.ceil(). Если аргумент не может быть преобразован в число, возвращается NaN.
Базовые примеры использования
Простое применение функции с разными типами чисел:
Math.trunc(13.37);13
Math.trunc(42.84);42
Math.trunc(0.123);0
Math.trunc(-0.123);-0
Работа с отрицательными числами:
Math.trunc(-13.37);-13
Math.trunc(-42.84);-42
Обработка специальных значений:
Math.trunc(NaN);NaN
Math.trunc(Infinity);Infinity
Math.trunc(-Infinity);-Infinity
Альтернативные функции в JavaScript
JavaScript предоставляет несколько функций для работы с целыми частями чисел:
Math.floor()- округляет число вниз до ближайшего целого. Для отрицательных чисел результат отличается отMath.trunc().Math.ceil()- округляет число вверх до ближайшего целого. Также отличается поведением для отрицательных чисел.Math.round()- округляет число до ближайшего целого по правилам математического округления.parseInt()- преобразует строку в целое число, но имеет особенности при работе с числами в экспоненциальной записи.
Math.trunc() предпочтительнее использовать, когда нужно просто отбросить дробную часть без какого-либо округления. Math.floor() лучше подходит для округления в меньшую сторону, а Math.ceil() - в большую.
Аналоги функции в других языках
Разные языки программирования предоставляют аналогичные функции для получения целой части числа.
Python:
import math
print(math.trunc(13.37))
print(math.trunc(-13.37))
print(int(13.37))13 -13 13
PHP:
echo intval(13.37);
echo floor(13.37);13 13
MySQL:
SELECT TRUNCATE(13.37, 0);
SELECT FLOOR(13.37);13 13
C/C++:
#include <math.h>
#include <stdio.h>
int main() {
printf("%f", trunc(13.37));
return 0;
}13.000000
Основное отличие JavaScript реализации - это метод объекта Math, тогда как в некоторых языках это глобальная функция или метод другого объекта.
Типичные ошибки
При работе с Math.trunc() могут возникать следующие проблемы:
1. Ожидание округления вместо отбрасывания:
// Ожидание: 14
// Реальность: 13
Math.trunc(13.9);13
2. Неявное преобразование типов:
Math.trunc(null);
Math.trunc(undefined);
Math.trunc('123.45abc');0 NaN 123
3. Путаница с отрицательными числами:
// Разные результаты для отрицательных чисел
Math.trunc(-13.7);
Math.floor(-13.7);-13 -14
4. Потеря точности при больших числах:
Math.trunc(1.0000000000000001);1
История изменений
Метод Math.trunc() был добавлен в стандарт ECMAScript 6 (ES2015). До его появления разработчики использовали различные обходные пути для получения целой части числа.
В более ранних версиях JavaScript приходилось использовать конструкции вида:
// До ES6
function trunc(x) {
return x < 0 ? Math.ceil(x) : Math.floor(x);
}
// Или
function trunc(x) {
return x | 0;
}Начиная с ES6, функция стала частью стандартной библиотеки и поддерживается всеми современными браузерами, включая Internet Explorer с полифиллами.
Расширенные примеры применения
1. Работа с денежными единицами:
function formatCurrency(amount) {
const wholePart = Math.trunc(amount);
const fractionalPart = Math.round((amount - wholePart) * 100);
return `${wholePart} руб. ${fractionalPart} коп.`;
}
console.log(formatCurrency(123.456));123 руб. 46 коп.
2. Разбиение числа на целую и дробную части:
function splitNumber(num) {
const integer = Math.trunc(num);
const fraction = num - integer;
return { integer, fraction };
}
console.log(splitNumber(3.14159));{ integer: 3, fraction: 0.14159 }3. Создание целочисленного слайдера:
function createSlider(min, max, step) {
return {
current: min,
next() {
this.current = Math.trunc(this.current + step);
return this.current <= max ? this.current : null;
}
};
}
const slider = createSlider(0, 10, 2.5);
console.log(slider.next());
console.log(slider.next());2 4
4. Обработка пользовательского ввода:
function processUserInput(input) {
const num = parseFloat(input);
if (isNaN(num)) return 'Ошибка ввода';
return `Целая часть: ${Math.trunc(num)}`;
}
console.log(processUserInput('45.67 текста'));Целая часть: 45
5. Генерация целочисленных случайных чисел:
function randomInt(min, max) {
return Math.trunc(Math.random() * (max - min + 1)) + min;
}
console.log(randomInt(1, 10));7
6. Анализ данных с плавающей точкой:
const measurements = [12.3, 45.6, 78.9, 23.4];
const integerParts = measurements.map(Math.trunc);
console.log(integerParts);[12, 45, 78, 23]
7. Проверка на целое число:
function isInteger(num) {
return num === Math.trunc(num);
}
console.log(isInteger(42));
console.log(isInteger(42.1));true false