Округление чисел javascript до целого числа

Math.round()

Метод Math.round() возвращает число, округлённое к ближайшему целому.

Синтаксис

Параметры

Описание

Если дробная часть числа больше, либо равна 0,5, аргумент будет округлён до ближайшего большего целого. Если дробная часть числа меньше 0,5, аргумент будет округлён до ближайшего меньшего целого.

Поскольку метод round() является статическим методом объекта Math , вы всегда должны использовать его как Math.round() , а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

Примеры

Пример: использование метода Math.round()

// Вернёт значение 20 x = Math.round(20.49); // Вернёт значение 21 x = Math.round(20.5); // Вернёт значение -20 x = Math.round(-20.5); // Вернёт значение -21 x = Math.round(-20.51); // Вернёт значение 1 (!) // Обратите внимание на ошибку округления из-за неточности арифметики с плавающей запятой // Сравните этот результат с результатом Math.round(1.005, -2) из следующего примера x = Math.round(1.005*100)/100; 

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

// Замыкание (function()  /** * Корректировка округления десятичных дробей. * * @param type Тип корректировки. * @param value Число. * @param exp Показатель степени (десятичный логарифм основания корректировки). * @returns Скорректированное значение. */ function decimalAdjust(type, value, exp)  // Если степень не определена, либо равна нулю. if (typeof exp === 'undefined' || +exp === 0)  return Math[type](value); > value = +value; exp = +exp; // Если значение не является числом, либо степень не является целым числом. if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0))  return NaN; > // Сдвиг разрядов value = value.toString().split('e'); value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp))); // Обратный сдвиг value = value.toString().split('e'); return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp)); > // Десятичное округление к ближайшему if (!Math.round10)  Math.round10 = function(value, exp)  return decimalAdjust('round', value, exp); >; > // Десятичное округление вниз if (!Math.floor10)  Math.floor10 = function(value, exp)  return decimalAdjust('floor', value, exp); >; > // Десятичное округление вверх if (!Math.ceil10)  Math.ceil10 = function(value, exp)  return decimalAdjust('ceil', value, exp); >; > >)(); // Округление к ближайшему Math.round10(55.55, -1); // 55.6 Math.round10(55.549, -1); // 55.5 Math.round10(55, 1); // 60 Math.round10(54.9, 1); // 50 Math.round10(-55.55, -1); // -55.5 Math.round10(-55.551, -1); // -55.6 Math.round10(-55, 1); // -50 Math.round10(-55.1, 1); // -60 Math.round10(1.005, -2); // 1.01 -- сравните этот результат с результатом Math.round(1.005*100)/100 выше // Округление вниз Math.floor10(55.59, -1); // 55.5 Math.floor10(59, 1); // 50 Math.floor10(-55.51, -1); // -55.6 Math.floor10(-51, 1); // -60 // Округление вверх Math.ceil10(55.51, -1); // 55.6 Math.ceil10(51, 1); // 60 Math.ceil10(-55.59, -1); // -55.5 Math.ceil10(-59, 1); // -50 

Спецификации

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

  • Math.abs()
  • Math.ceil()
  • Math.floor()
  • Math.sign() Экспериментальная возможность
  • Math.trunc() Экспериментальная возможность

Источник

Округление чисел в JavaScript

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

js округление

Math — встроенный в JS объект, который содержит свойства и методы с математическим уклоном.

Math.round

Math.round(x) — округляет число до ближайшего целого по математическому принципу. Если первая цифра после запятой равна или больше 5, то к положительному целому числу прибавляется единица.

Math.round(10.49); // 10 Math.round(10.5); // 11 Math.round(10.51); // 11

К отрицательному идёт прибавка только если цифра строго больше 5:

Math.round(-10.49); // -10 Math.round(-10.5); // -10 Math.round(-10.51); // -11

Math.floor

Math.floor(x) — округление до наименьшего целого. Для положительных чисел всё что после запятой не учитывается и отбрасывается.

Math.floor(10.49); // 10 Math.floor(10.5); // 10 Math.floor(10.51); // 10

Для отрицательных логика та же, но целое число изменяется в меньшую сторону:

Math.floor(-10.49); // -11 Math.floor(-10.5); // -11 Math.floor(-10.51); // -11

Math.ceil

Math.ceil(x) — это противоположность «Math.floor», то есть преобразование происходит в большую сторону.

Math.ceil(10.49); // 11 Math.ceil(10.5); // 11 Math.ceil(10.51); // 11
Math.ceil(-10.49); // -10 Math.ceil(-10.5); // -10 Math.ceil(-10.51); // -10

Math.trunc

Math.trunc(x) — предельно простая функция — для любых чисел отбрасывает всё после запятой.

Math.trunc(10.49); // 10 Math.trunc(10.5); // 10 Math.trunc(10.51); // 10

Тоже самое для отрицательных:

Math.trunc(-10.49); // -10 Math.trunc(-10.5); // -10 Math.trunc(-10.51); // -10

Не поддерживается браузером «Internet Explorer».

Округление до нужного знака

Рассмотрим способы округления до определенного знака после запятой. Для этих целей может применяться любая предыдущая функция. Округлим «Pi» до 2 знаков после запятой.

Math.round(3.14159265359 * Math.pow(10, 2)) / Math.pow(10, 2); // 3.14 Math.floor(3.14159265359 * Math.pow(10, 2)) / Math.pow(10, 2); // 3.14 Math.ceil(3.14159265359 * Math.pow(10, 2)) / Math.pow(10, 2); // 3.15 Math.trunc(3.14159265359 * Math.pow(10, 2)) / Math.pow(10, 2); // 3.14

Math.pow(10, 2) — возводит первый аргумент в степень (второй аргумент).

Math.round(3.14159265359 * 1000) / 1000; // 3.142 Math.round(3.14159265359 * Math.pow(10, 3)) / Math.pow(10, 3); // 3.142

Number.toFixed

Этот метод из прототипа объекта «Number» похож на «Math.round», но с рядом отличий:

  • результат приводится к типу «String»;
  • если передаваемый аргумент больше количества знаков после запятой, то метод добавит к результату нули.
3.14159265359.toFixed(2); // "3.14" 3.14159265359.toFixed(3); // "3.142" let num = 3.14159265359; num.toFixed(3); // "3.142" -3.14159265359.toFixed(3); // "-3.142" 3.14.toFixed(4); // "3.1400" let num = 3; num.toFixed(3); // "3.000"

Для приведения результата к типу «Number» используйте функцию «parseFloat».

parseFloat(3.14159265359.toFixed(3)); // 3.142

Источник

Math . floor ( ) , Math . round ( ) , Math . ceil ( ) и Math . trunc ( )

Объект Math содержит набор методов, который используется для округления чисел:

  • round ( ) — округление по обычным правилам;
  • floor ( ) — округление вниз;
  • ceil ( ) — округление вверх;
  • trunc ( ) — отбрасывание дробной части, не обращая внимания на знак аргумента.

Как пишется

Скопировать ссылку «Как пишется» Скопировано

Для обычного округления используйте Math . round ( ) :

 console.log(Math.round(15.52))// 16 console.log(Math.round(15.3))// 15 console.log(Math.round(15.52)) // 16 console.log(Math.round(15.3)) // 15      

Округление до ближайшего целого в большую сторону — Math . ceil ( ) :

 console.log(Math.ceil(15.52))// 16 console.log(Math.ceil(15.3))// 16 console.log(Math.ceil(15.52)) // 16 console.log(Math.ceil(15.3)) // 16      

Округление до ближайшего целого в меньшую сторону — Math . floor ( ) :

 console.log(Math.floor(15.52))// 15 console.log(Math.floor(15.3))// 15 console.log(Math.floor(15.52)) // 15 console.log(Math.floor(15.3)) // 15      

🛠 Используйте осторожно при работе с отрицательными числами:

 console.log(Math.floor(-15.3))// -16 console.log(Math.floor(-15.3)) // -16      

Так происходит потому что -16 меньше, чем -15, а округление происходит в меньшую сторону.

Отбрасывание дробной части — Math . trunc ( )

 console.log(Math.trunc(15.52))// 15 console.log(Math.trunc(-15.3))// -15 console.log(Math.trunc(0.123))// 0 console.log(Math.trunc(-0.123))// -0 console.log(Math.trunc(15.52)) // 15 console.log(Math.trunc(-15.3)) // -15 console.log(Math.trunc(0.123)) // 0 console.log(Math.trunc(-0.123)) // -0      

На практике

Скопировать ссылку «На практике» Скопировано

Николай Лопин советует

Скопировать ссылку «Николай Лопин советует» Скопировано

🛠 Разные виды округления нужны в разных ситуациях:

  • когда нужно разбить данные на страницы и посчитать общее количество страниц, используйте округление вверх: const total Pages = Math . ceil ( total Items / items Per Page ) .
  • когда нужно выбрать случайный элемент массива, используйте округление вниз: Math . floor ( Math . random ( ) * array . length ) .

Источник

Читайте также:  Server send event php
Оцените статью