负数表示Javascript中的错误NaN

负数表示Javascript中的错误NaN,javascript,math,negative-number,Javascript,Math,Negative Number,我正试图写一个关于将数字更改为其立方根的代码,但每当我输入负数时,就会收到一个错误 尝试使用字符串对名为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("Erro

我正试图写一个关于将数字更改为其立方根的代码,但每当我输入负数时,就会收到一个错误

尝试使用字符串对名为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");
}
let number=提示(“输入数字”);
如果(编号>0 | |编号<0){
设x=数字**(1/3);
警报(x);
}
else if(数字==0){
警报(编号);
}
否则{
警报(“错误”);
}

例如,我输入-8,我希望结果是-2,但我收到NaN

这是因为负数的立方根有复数作为解,还有负数实数,要得到负数实数,你必须编写一个简单的逻辑:

函数cubeRoot(编号){
常数为负=数值<0;
常数cubeRoot=Math.pow(Math.abs(数字),1/3);
返回值为负?-cubeRoot:cubeRoot;
}
console.log(cubeRoot(-8));
console.log(cubeRoot(0));

控制台日志(cubeRoot(8))“负数的立方根不是真的”-为什么<代码>cbrt(-8)=-2
@georg我重新措辞了答案,希望我答对了。我的数学技能已经过时了。实际问题是,
**1/3
不是立方根,因为
1/3
不是数学上的三分之一,而是它的浮点近似值(在dupe中解释得很好)。