我正在尝试编写有关将数字更改为其立方根的代码,但是每当输入负数时,都会收到NaN错误。
试图使用字符串对称为Number的函数进行编号
let number = prompt("Enter a number");
if (number > 0 || number < 0){
let x = number**(1/3);
alert(x);
}
else if (number == 0){
alert(number);
}
else{
alert("Error");
}
例如,我输入-8,我希望它会给我-2,但我收到NaN
答案 0 :(得分:0)
这是因为负数的立方根与负的实数一起具有复数作为解,因此必须编写一个简单的逻辑来获得负的实数:
function cubeRoot(number){
const isNegative = number < 0;
const cubeRoot = Math.pow(Math.abs(number), 1/3);
return isNegative ? -cubeRoot : cubeRoot;
}
console.log(cubeRoot(-8));
console.log(cubeRoot(0));
console.log(cubeRoot(8));
有一个可用于执行此操作的库:math.js
console.log(math.cbrt(-8));
console.log(math.cbrt(0));
console.log(math.cbrt(8));
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/6.2.1/math.js"></script>