Возведение в степень и корни
Возведение в степень и корни
Технический фундамент степенных операций
Степень и корень в вычислениях это взаимно обратные операции:
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) в результате и смысле?
Микро-сценарии
- Формула расстояния между двумя точками.
function distance(x1, y1, x2, y2) {
const dx = x2 - x1;
const dy = y2 - y1;
return Math.sqrt(dx ** 2 + dy ** 2);
}
- Расчет суммы с ростом по степенной шкале.
function growth(base, step) {
return base * 1.1 ** step;
}
- Безопасный расчет квадратного корня из пользовательского ввода.
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. - Это базовые операции для геометрии, аналитики и визуальных вычислений.