javascript - 负数在 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
解决方案
这是因为负数的立方根具有复数作为解以及负实数,要获得负实数,您必须编写一个简单的逻辑:
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>
推荐阅读
- laravel - 即使密码正确,Laravel Hash::check 也会返回 false
- android - 无效类型代码:19 在 Android Studio 中更改 JDK 版本时
- git - Git sparse-checkout 没有得到任何文件夹
- python - 超级父类和传递类变量的大多数pythonic方式
- django - Django - 使用定制用户模型时如何让所有用户加入团队
- reactjs - 为什么使用键作为索引从列表中删除项目按预期工作?
- scala - 使用 Scala 和 Spark 将具有巨大值的 Map 类型列拆分为多行
- python - 实时尝试时出现 OpenCv 读取错误
- laravel - 减少查询量,页面加载缓慢
- c++ - 修改变量时因变量不反映变化?