Learn JavaScript

Math.cbrt() - метод для вычисления кубического корня в JavaScript

Math.cbrt() вычисляет кубический корень числа.

Это число, которое при умножении само на себя три раза даёт исходное значение.

Синтаксис

Math.cbrt(x)

x - число, для которого нужно найти кубический корень.

Что делает Math.cbrt()

Метод возвращает кубический корень числа.

console.log(Math.cbrt(27)); // 3
console.log(Math.cbrt(8));  // 2

То есть:

  • Math.cbrt(27) даёт 3
  • потому что 3 * 3 * 3 = 27

Что возвращает Math.cbrt()

Math.cbrt() возвращает число типа number.

const result = Math.cbrt(64);

console.log(result);        // 4
console.log(typeof result); // "number"

Корень из 0

Для нуля результат тоже предсказуемый.

console.log(Math.cbrt(0)); // 0

Отрицательные числа

Это одна из самых полезных особенностей метода.

console.log(Math.cbrt(-8));  // -2
console.log(Math.cbrt(-27)); // -3

В отличие от Math.sqrt(), кубический корень для отрицательных чисел нормально существует в обычных числах JavaScript.

Math.cbrt() и Math.pow(x, 1 / 3)

На первый взгляд кажется, что это одно и то же, но есть важный нюанс.

console.log(Math.cbrt(27));        // 3
console.log(Math.pow(27, 1 / 3));  // 3

Для положительных чисел результат часто совпадает.

Но для отрицательных значений Math.cbrt() ведёт себя надёжнее:

console.log(Math.cbrt(-8));       // -2
console.log(Math.pow(-8, 1 / 3)); // NaN

Именно поэтому, если нужен именно кубический корень, лучше использовать Math.cbrt().

Не всегда целый результат

Кубический корень не обязан быть целым числом.

console.log(Math.cbrt(2)); // 1.2599210498948732

Это нормальное поведение.

Нюанс с -0

Если передать -0, результатом тоже будет -0.

console.log(Math.cbrt(-0)); // -0

Проверить можно так:

console.log(Object.is(Math.cbrt(-0), -0)); // true

Для большинства обычных задач это не мешает, но знать о таком поведении полезно.

Неявное приведение типов

Math.cbrt() сначала пытается привести аргумент к числу.

console.log(Math.cbrt("27"));  // 3
console.log(Math.cbrt(null));  // 0
console.log(Math.cbrt(true));  // 1
console.log(Math.cbrt(undefined)); // NaN

На практике обычно лучше передавать в метод уже готовое число.

NaN и Infinity

Для специальных значений метод ведёт себя предсказуемо.

console.log(Math.cbrt(NaN));       // NaN
console.log(Math.cbrt(Infinity));  // Infinity
console.log(Math.cbrt(-Infinity)); // -Infinity

Число не меняется

Math.cbrt() не изменяет исходное значение. Он только возвращает новый результат.

const value = 125;
const root = Math.cbrt(value);

console.log(value); // 125
console.log(root);  // 5

Когда это полезно

Math.cbrt() удобно использовать, когда:

  • нужно найти кубический корень явно и читаемо
  • важно корректно работать с отрицательными числами
  • не хочется полагаться на запись через степень 1 / 3

Пример:

const volume = 64;

console.log(Math.cbrt(volume)); // 4

Частые ошибки

Использовать Math.pow(x, 1 / 3) вместо Math.cbrt()

console.log(Math.pow(-8, 1 / 3)); // NaN

Для отрицательных чисел такой вариант ненадёжен.

Путать кубический корень с квадратным

console.log(Math.sqrt(8)); // 2.8284271247461903
console.log(Math.cbrt(8)); // 2

Это разные математические операции.

Ждать только целые результаты

console.log(Math.cbrt(2)); // 1.2599210498948732

Корень вполне может быть дробным.

Быстрая памятка

  • Math.cbrt() вычисляет кубический корень
  • метод возвращает number
  • он нормально работает с отрицательными числами
  • для отрицательных значений он надёжнее, чем Math.pow(x, 1 / 3)
  • -0 сохраняется как -0

Коротко

Math.cbrt() - это стандартный способ найти кубический корень числа в JavaScript. Главное, что стоит запомнить: в отличие от записи через степень 1 / 3, этот метод корректно и предсказуемо работает даже с отрицательными числами.