首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将-Infinity转换为零

将-Infinity转换为零
EN

Stack Overflow用户
提问于 2019-10-12 15:56:46
回答 4查看 804关注 0票数 2

我正在做一些计算,我的计算结果给了我NaN。所以我用了下面的东西来转换它,0,这很好

代码语言:javascript
复制
Number((((0-0)/0)*100).toFixed(2)) || 0

直到结果是-Infinity和我发现-Infinity是数值。所以,现在我做了如下所示,将-Infinity转换为0

代码语言:javascript
复制
var result = Number((((0-18)/0)*100).toFixed(2)) || 0
if (result == Number.POSITIVE_INFINITY || result == Number.NEGATIVE_INFINITY)
{
    result=0;
	console.log(result)
}

这是解决问题的办法,但是否有更短或更好的办法?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-10-12 16:10:32

在Javascript中存在isFinite(),如果一个数字是有限的或者不是有限的,它就返回。所以:

代码语言:javascript
复制
var result = isFinite(Number((((0-18)/0)*100).toFixed(2))) || 0;
console.log(result);

票数 4
EN

Stack Overflow用户

发布于 2019-10-12 16:51:44

最快的方法是使用按位而不是运算符:

代码语言:javascript
复制
var result = ~~Number((((0-18)/0)*100).toFixed(2))

它的执行速度比其他方法快得多,编写起来也更短。

票数 2
EN

Stack Overflow用户

发布于 2019-10-12 17:11:56

我从“Riccardo”中获得第二个答案。另一种方法可以是使用Javscript中的以下两点。

代码语言:javascript
复制
**Any number % Infinity  ===  number** 

**(Infinity || -Infinity) % Infinity ===  NaN**

所以你基本上可以把你的代码重写为..。

代码语言:javascript
复制
Number((((0-18)/0)*100).toFixed(2)) % Infinity || 0

你可以试试下面的片段。

代码语言:javascript
复制
console.log(Number((((0-0)/3)*100).toFixed(2)) % Infinity || 0);
console.log(Number((((0-1)/0)*100).toFixed(2)) % Infinity || 0);
console.log(Number((((1-0)/0)*100).toFixed(2)) % Infinity || 0);
console.log(Number((((1-2)/0)*100).toFixed(2)) % Infinity || 0);
console.log(Number((((1-2)/2)*100).toFixed(2)) % Infinity || 0);
console.log(Number((((0-18)/0)*100).toFixed(2)) % Infinity || 0);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58355900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档