Trunc: примеры (JAVASCRIPT)

Функция 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. Работа с денежными единицами:

Пример javascript
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. Разбиение числа на целую и дробную части:

Пример javascript
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. Создание целочисленного слайдера:

Пример javascript
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. Обработка пользовательского ввода:

Пример javascript
function processUserInput(input) {
    const num = parseFloat(input);
    if (isNaN(num)) return 'Ошибка ввода';
    return `Целая часть: ${Math.trunc(num)}`;
}
console.log(processUserInput('45.67 текста'));
Целая часть: 45

5. Генерация целочисленных случайных чисел:

Пример javascript
function randomInt(min, max) {
    return Math.trunc(Math.random() * (max - min + 1)) + min;
}
console.log(randomInt(1, 10));
7

6. Анализ данных с плавающей точкой:

Пример javascript
const measurements = [12.3, 45.6, 78.9, 23.4];
const integerParts = measurements.map(Math.trunc);
console.log(integerParts);
[12, 45, 78, 23]

7. Проверка на целое число:

Пример javascript
function isInteger(num) {
    return num === Math.trunc(num);
}
console.log(isInteger(42));
console.log(isInteger(42.1));
true
false

JS trunc function comments

En
Trunc Returns the integer part of a number by removing any fractional digits