亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 -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條經驗 獲得超13個贊

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


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

console.log(result);


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

TA貢獻1725條經驗 獲得超8個贊

最快的方法是使用按位 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 關注
  • 445 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號