幾種數值類型的最大最小值

Integer:


無窮大:Integer.MAX_VALUE; (最大值:2147483647)

無窮小:Integer.MIN_VALUE;(最小值:-2147483648)

Long:
無窮大:Long.MAX_VALUE;(最大值:9223372036854775807)
無窮小:Long.MIN_VALUE;(最小值:-9223372036854775808)

Double:
無窮大:Double.MAX_VALUE;
無窮小:Double.MIN_VALUE;

Float:
無窮大:Float.MAX_VALUE;

無窮小:Float.MIN_VALUE;

遇到一個理所當然但是又沒注意到的問題。
在JDK中,整形類型是有範圍的,最大值爲Integer.MAX_VALUE,即2147483647,最小值爲Integer.MIN_VALUE -2147483648。
對整形最大值加1,2147483648(越界了),那麼此時值爲多少呢?結果是-2147483648,即是Integer.MIN_VALUE。
類似的,對Integer.MIN_VALUE取反或者取絕對值呢?仍爲Integer.MIN_VALUE,因爲值爲-2147483648,絕對值2147483648超過Integer.MAX_VALUE 2147483647。
所以就有以下結果
Integer.MAX_VALUE + 1 = Integer.MIN_VALUE
Math.abs(Integer.MIN_VALUE) =  Integer.MIN_VALUE
Long,short,byte的結論是相同的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章