JavaScript метод Math.ceil()
Определение и применение
JavaScript метод ceil() объекта
Math
вычисляет и возвращает наименьшее целое число, которое больше или равно переданному числу (округляет число вверх).
Проверьте поведение в редактируемом примере.
Поддержка браузерами
Спецификация: ecma262
Поддерживается во всех основных браузерах с 2015 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
ceil | 1 | 12 | 1 | 3 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 | 1 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис
Math.ceil( num );
Спецификация
Значения параметров
| Параметр | Описание |
|---|---|
num |
Числовое значение. |
Возвращаемое значение и особенности
Возвращает число, округлённое к +Infinity. Например, Math.ceil(-1.2) равно -1; значения между -1 и 0 дают
-0. NaN и бесконечности сохраняются. Аргумент преобразуется в Number; BigInt и
Symbol вызывают TypeError.
Примеры, попробуйте сами
Как ceil() округляет положительные и отрицательные числа
Измените числа, в том числе отрицательные, и сравните результат округления. В примерах случайного выбора повторите запуск и проверьте границы.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
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
<p>Результат выполнения выводится в консоль.</p>
main.js
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
<p>Результат выполнения выводится в консоль.</p>
main.js
// Обе округлённые границы включены. Пример рассчитан на небольшие конечные диапазоны.
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)
}