为了账号安全,请及时绑定邮箱和手机立即绑定

将 -Infinity 转换为零

将 -Infinity 转换为零

潇潇雨雨 2021-11-18 16:35:18
我正在做一些计算,我的计算结果给了我NaN。所以我使用了类似下面的东西来转换它0,这很好Number((((0-0)/0)*100).toFixed(2)) || 0直到结果是 -Infinity 并且我发现那-Infinity是数值。所以现在我做了类似下面的事情来转换-Infinity为0var result = Number((((0-18)/0)*100).toFixed(2)) || 0if (result == Number.POSITIVE_INFINITY || result == Number.NEGATIVE_INFINITY){    result=0;  console.log(result)}这是解决问题,但有更短或更好的方法吗?
查看完整描述

3 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

在 Javascript 中存在 isFinite() ,它返回一个数字是否有限。所以:


var result = isFinite(Number((((0-18)/0)*100).toFixed(2))) || 0;

console.log(result);


查看完整回答
反对 回复 2021-11-18
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

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

var result = ~~Number((((0-18)/0)*100).toFixed(2))

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


查看完整回答
反对 回复 2021-11-18
?
狐的传说

TA贡献1804条经验 获得超3个赞

我支持@Riccardo Gai 的回答。另一种方法是利用Javscript中的以下 2 点。


**Any number % Infinity  ===  number** 


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

因此,您基本上可以将代码重写为...


Number((((0-18)/0)*100).toFixed(2)) % Infinity || 0

你可以试试下面的片段..


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);


查看完整回答
反对 回复 2021-11-18
  • 3 回答
  • 0 关注
  • 385 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信