Возведение в степень и корни

Возведение в степень и корни

Технический фундамент степенных операций

Степень и корень в вычислениях это взаимно обратные операции:

  • a ** b масштабирует значение по степенному закону;
  • sqrt(x) эквивалентен x ** 0.5;
  • дробные и отрицательные степени меняют характер результата (дробь, корень, нелинейный рост).

На техническом уровне важно помнить: тип number в JS с плавающей точкой, поэтому в сложных формулах лучше не округлять промежуточные этапы слишком рано.

Где степени и корни реально применяются

Степени и корни в JavaScript встречаются чаще, чем кажется: расчеты площади, длины вектора, формулы в аналитике, физике, играх, анимациях, обработке данных. Это не «школьная теория», а рабочий инструмент.

Ключевой момент: в JS есть и старый стиль (Math.pow), и современный оператор (**). Нужно уметь читать оба варианта.

Возведение в степень

console.log(Math.pow(3, 4)); // 81
console.log(3 ** 4); // 81

Math.pow(a, b) и a ** b дают одинаковый результат. В новом коде чаще используют **, потому что он короче и читается естественно.

const radius = 6;
const area = Math.PI * radius ** 2;

Смотри, что важно:

  • оператор ** правоассоциативный: 2 ** 3 ** 2 это 2 ** (3 ** 2), а не (2 ** 3) ** 2;
  • с отрицательными числами нужны скобки: (-2) ** 2 или -(2 ** 2). Запись -2 ** 2 — синтаксическая ошибка.
console.log(2 ** 3 ** 2); // 512
console.log((-2) ** 2); // 4
console.log(-(2 ** 2)); // -4

Корни: Math.sqrt и Math.cbrt

console.log(Math.sqrt(81)); // 9
console.log(Math.cbrt(64)); // 4
  • sqrt — квадратный корень;
  • cbrt — кубический корень.

Также корень можно выразить через степень:

console.log(81 ** (1 / 2)); // 9
console.log(64 ** (1 / 3)); // 4

Еще один нюанс: для отрицательных значений Math.cbrt работает, а дробная степень обычно даст NaN:

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

Что будет при нестандартных входах

console.log(Math.pow(2, -3)); // 0.125
console.log(Math.pow(9, 0.5)); // 3
console.log(Math.sqrt(-9)); // NaN

Здесь часто путаются: отрицательная степень дает дробь, а отрицательное число под sqrt в обычных вещественных числах не имеет результата, поэтому NaN.

Проверь себя: чем отличается Math.pow(16, 0.5) от Math.sqrt(16) в результате и смысле?

Микро-сценарии

  1. Формула расстояния между двумя точками.
function distance(x1, y1, x2, y2) {
  const dx = x2 - x1;
  const dy = y2 - y1;
  return Math.sqrt(dx ** 2 + dy ** 2);
}
  1. Расчет суммы с ростом по степенной шкале.
function growth(base, step) {
  return base * 1.1 ** step;
}
  1. Безопасный расчет квадратного корня из пользовательского ввода.
function safeRoot(raw) {
  const value = Number(raw);
  if (!Number.isFinite(value) || value < 0) return null;
  return Math.sqrt(value);
}

Типичные ошибки

  • Путать a ** b и a * b.
  • Не валидировать отрицательные значения перед sqrt.
  • Терять точность из-за раннего округления.
  • Не обрабатывать NaN в дальнейшей логике.

Анти-провал: сначала проверяй диапазон входных данных, потом применяй степень/корень, и только в конце округляй для UI.

Краткий итог

  • Степени в JS: Math.pow или **.
  • Корни: Math.sqrt, Math.cbrt или дробная степень.
  • Отрицательная степень и дробная степень меняют характер результата.
  • Некорректные входы могут давать NaN.
  • Это базовые операции для геометрии, аналитики и визуальных вычислений.