JavaScript метод Math.ceil()

Определение и применение

JavaScript метод ceil() объекта Math вычисляет и возвращает наименьшее целое число, которое больше или равно переданному числу (округляет число вверх).

Проверьте поведение в редактируемом примере.

Поддержка браузерами

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2015 года.

Показать браузеры
Совместимостьjavascript.builtins.Math.ceil
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
ceil✓1✓12✓1✓3✓1✓18✓4✓10.1✓1✓1.0✓4.4✓1

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
Math.ceil( num );

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

ECMAScript: Math.ceil()

Значения параметров

Math: справочные сведения
Параметр Описание
num Числовое значение.

Возвращаемое значение и особенности

Возвращает число, округлённое к +Infinity. Например, Math.ceil(-1.2) равно -1; значения между -1 и 0 дают -0. NaN и бесконечности сохраняются. Аргумент преобразуется в Number; BigInt и Symbol вызывают TypeError.

Примеры, попробуйте сами

Как ceil() округляет положительные и отрицательные числа

Измените числа, в том числе отрицательные, и сравните результат округления. В примерах случайного выбора повторите запуск и проверьте границы.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
console.log(Math.ceil(0.15)) // возвращаемое значение 1
console.log(Math.ceil(7)) // возвращаемое значение 7
console.log(Math.ceil(7.0000001)) // возвращаемое значение 8
console.log(Math.ceil(-0.99)) // возвращаемое значение -0
console.log(Math.ceil(-7)) // возвращаемое значение -7
console.log(Math.ceil(-7.000001)) // возвращаемое значение -7

В следующем примере мы рассмотрим почему для выбора индекса вместо ceil() нужен floor() вместе с random() объекта Math и сравним формулы выбора случайного элемента внутри массива:

Почему для случайного индекса нужен floor(), а не ceil()

Измените числа, в том числе отрицательные, и сравните результат округления. В примерах случайного выбора повторите запуск и проверьте границы.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
const arr = ['a', 'b', 'c']
const random = Math.random()
const index = Math.floor(random * arr.length)
console.log('Случайный элемент:', arr[index])
// Крайний случай random = 0 показывает ошибку формулы с ceil().
console.log('Индекс через floor при 0:', Math.floor(0 * arr.length))
console.log('Индекс через ceil при 0:', Math.ceil(0 * arr.length) - 1)
console.log('Элемент для 0.86:', arr[Math.floor(0.86 * arr.length)])

Обратите внимание, что метод random() не возвращает 1. Индекс выбирают через Math.floor(); вариант Math.ceil(random * length) - 1 при random = 0 даёт -1. Для пустого массива выбирать нечего.

В следующем примере мы рассмотрим как с помощью метода random(), ceil() и floor() объекта Math получить случайное целое число внутри определенного диапазона. Обратите внимание, что возвращаемое значение лежит между округлёнными границами включительно: от Math.ceil(min) до Math.floor(max):

Как ceil() задаёт нижнюю границу случайного целого

Измените числа, в том числе отрицательные, и сравните результат округления. В примерах случайного выбора повторите запуск и проверьте границы.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
// Обе округлённые границы включены. Пример рассчитан на небольшие конечные диапазоны.
function getRandomIntFromRange(min, max) {
    const lower = Math.ceil(min)
    const upper = Math.floor(max)
    if (
        !Number.isSafeInteger(lower) ||
        !Number.isSafeInteger(upper) ||
        lower > upper ||
        !Number.isSafeInteger(upper - lower + 1)
    ) {
        throw new RangeError('Нужен непустой диапазон безопасных целых')
    }
    return Math.floor(Math.random() * (upper - lower + 1)) + lower
}
for (let i = 0; i < 5; i++) {
    console.log(getRandomIntFromRange(5, 10)) // Целое от 5 до 10; результат меняется при запуске.
}
console.log('Одна точка:', getRandomIntFromRange(7, 7))
try {
    getRandomIntFromRange(5.1, 5.9)
} catch (error) {
    console.log('Пустой диапазон:', error.name)
}