C 中的Infinity有個小坑

2021-09-06 23:13:49 字數 434 閱讀 1301

昨天家裡有事,上網也不方便,就沒有推送文章。今天很累,也不長篇大論了。簡單介紹一下最近遇到的乙個小坑。

我們知道,在c#中主要有如下幾種數值型別:int、long、decimal、float和double。對於前三種,如果除零,那麼會提示表示式錯誤(直接書寫數字)或報dividebyzeroexception異常(使用變數);對於後面兩種,除零會得到正負無窮大,除非你是0.0/0.0那麼會得到nan(非數字)。大部分參考資料都是這樣告訴大家的。比如「閱讀原文」這篇淺顯易懂的文章。

最近,之前的**出現乙個bug,老是出現infinity,然後排查了所有除法表示式,問題都無法解決。跟蹤出現infinity之前的變數值,發現「1e+300 * 1e+10」的乘法,遂仔細研究**邏輯,發現某些變數(double型別)被重複相乘越來越大,乃至變成了無窮大。才意識到不僅除零會出現無窮大,大數相乘也會出現無窮大。大家以後小心。

使用 js onkeyDown事件有個小坑!

使用場景 在頁面登陸頁面按回車鍵 就自動呼叫登陸方法實現登陸。坑描述 在div 等非輸入標籤中寫onkeydown 事件方法 會不起作用!必須滿足兩個條件1.focus 2 設定tabindex值,然後在頁面onload 後focus。如下 登 錄 js function keydown windo...

sprintf sscanf中的乙個小坑

char buf 32 sprintf buf,s,d test 100 char out 32 int i 0 sscanf buf,s,d out,i 這段 開始以為會正常執行,結果卻是crash。sscanf在解析 s的時候遇到空格 指標符號 n才會停止解析,而這個 s後面的逗號基本上是乙個擺...

c 之list簡單操作,有乙個小坑需要注意

include include include using namespace std class ca virtual void ff class cb public ca void ff class cc public cb int main listlist1 10,100 list1.pus...