首页 > 解决方案 > 负数在 Javascript 中给出错误 NaN

问题描述

我正在尝试编写一个关于将数字更改为其立方根的代码,但是每当我输入负数时,我都会收到 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

标签: javascriptmathnegative-number

解决方案


这是因为负数的立方根具有复数作为解以及负实数,要获得负实数,您必须编写一个简单的逻辑:

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>


推荐阅读