Để tính căn bậc n của số x: x^(1/n). Sử dụng Math.pow(x, 1/n) hoặc toán tử ** (ES2016).
Công thức
nthRoot = Math.pow(x, 1 / n); // Hoặc ES2016: nthRoot = x ** (1 / n);
Ví dụ: Hàm tính căn bậc n xử lý dấu âm
<!DOCTYPE html>
<html>
<body>
<script>
function nthRoot(x, n) {
if (n === 0) return NaN; // Tránh chia cho 0
// Xử lý số âm: căn bậc chẵn của số âm không phải số thực
if (x < 0 && n % 2 === 0) {
return NaN; // Hoặc throw error
}
var sign = x < 0 ? -1 : 1;
var absX = Math.abs(x);
var result = sign * Math.pow(absX, 1 / n);
return result;
}
// Test
console.log(nthRoot(36, 2)); // 6 (căn bậc 2)
console.log(nthRoot(27, 3)); // 3 (căn bậc 3)
console.log(nthRoot(-27, 3)); // -3 (căn bậc 3 của số âm)
console.log(nthRoot(-16, 2)); // NaN (căn bậc 2 của số âm)
console.log(nthRoot(16, 4)); // 2 (căn bậc 4)
</script>
</body>
</html>
Lưu ý:
Math.sqrt(x)là căn bậc 2 (tối ưu hơnMath.pow(x, 0.5)).Math.cbrt(x)là căn bậc 3 (hỗ trợ số âm đúng).- Sai số floating-point:
Math.pow(27, 1/3)có thể ra2.9999999999999996. DùngMath.round()hoặctoFixed()nếu cần chính xác.