天天看點

javascript算術運算溢出

js中的算術在溢出overflow,下溢underflow或被0整除時不會報錯。

當數字結果超過了數字上限時,結果為一個特殊的無窮大(infinity)值,在js中以infinity表示;同理,當負數超出了負數表示範圍,則結果為負無窮大,在js中用-infinity表示。

下溢是當運算結果無限接近于0并比js能表示的最小值還小時發生的一種情形。這種情況下,js會傳回0;當負數發生下溢時,js韓慧一個特殊的值“負零”,這個負零幾乎和正常的零完全一樣,一般很少用到負零。

被0整除在js中不報錯:隻是傳回無窮大或負無窮大。但有一個例外,就是0除以0是沒有意義的,這種運算結果為一個非數字(not a number)值,yoganan表示。無窮大除以無窮大,給任意負數開方或算術運算符與不是數字或無法轉換為數字的操作數一起使用時都傳回nan。

js中的nan有一點特殊:它和任何值都不相同,包括自身。即無法通過x==nan判斷x是否為nan;相反應該使用x!=x來判斷。函數isnan()與此類似;js中有一個類似的函數isfinite(),在參數不是nan、infinity或-infinity時傳回true。

負零值通用有些特殊,它和正零值是相同的,即使使用js的嚴格相等測試來判斷也是相同的。

繼續閱讀