将 -Infinity 转换为零

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


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

直到结果是 -Infinity 并且我发现那-Infinity是数值。所以现在我做了类似下面的事情来转换-Infinity为0


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

if (result == Number.POSITIVE_INFINITY || result == Number.NEGATIVE_INFINITY)

{

    result=0;

  console.log(result)

}

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


潇潇雨雨
浏览 498回答 3
3回答

红颜莎娜

在 Javascript 中存在 isFinite() ,它返回一个数字是否有限。所以:var result = isFinite(Number((((0-18)/0)*100).toFixed(2))) || 0;console.log(result);

qq_遁去的一_1

最快的方法是使用按位 Not 运算符:var result = ~~Number((((0-18)/0)*100).toFixed(2))它的执行速度比其他方法快得多,编写时间也更短。

狐的传说

我支持@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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript