官术网_书友最值得收藏!

2.3.2 小數類型

根據對小數精確程度的要求不同,將小數類型分為兩種,分別為雙精度類型和浮點類型。下面將依次講解這兩種類型。

1.雙精度類型(double)

由于不能精確表示數據,所以小數默認使用相對更精確的雙精度表示。雙精度類型是默認類型,占8字節,如圖2.22所示。

圖2.22 雙精度類型占8字節

它的有效范圍為4.9E-324~1.7976931348623157E308,如圖2.23所示。

圖2.23 雙精度類型的范圍

注意:很多時候,在輸入1.7976931348623158E308后,運行顯示,是不會報錯的,這是因為小數的不精確性導致的。

助記:double是一個英文單詞,本身意思就是雙倍,其發音為[?d?bl]。

注意:有時候,為了強調一個數為雙精度類型,可以添加d或D,如3.14d、0.5D。

示例2-5】下面將使用代碼展示雙精度類型的數據。代碼如下:

運行結果如下:

注意:%f是printf的格式符,用來顯示小數。

2.浮點類型(float)

很多時候不需要特別精確的數據。例如,使用圓周率的時候,只取小數點的后兩位即可。這時,就可以使用浮點類型(也被稱為單精度類型)。浮點類型占4字節,如圖2.24所示。

圖2.24 浮點類型占4字節

為了區分雙精度類型和浮點類型,必須在浮點類型的數據后面添加f或F,否則這個數據還是會按照雙精度類型的數據進行處理。

示例2-6】下面將使用代碼展示浮點類型的數據。代碼如下:

運行結果如下:

注意:在計算機中,0.6是無法按照二進制方式精確表示的,所以輸出時會默認輸出6位有效數字,即0.600000。其中,小數點前的0和小數點不算有效位數。

浮點類型的有效范圍為1.4E-45~3.4028235E38,如圖2.25所示。

圖2.25 浮點類型的范圍

助記:float是一個英文單詞,本身意思就是浮動,其發音為[fl??t]。

注意:小數在存儲時都會將小數點進行浮動,這樣就會省去將一個小數分開保存(整數部分和小數部分)的麻煩。

由于雙精度類型和浮點類型的有效范圍不容易被記住,所以在使用這兩個類型時,可以通過最大值和最小值來查看有效范圍。其中,最大值可以使用MAX_VALUE獲取,最小值可以使用MIN_VALUE獲取。以下代碼用來獲取這兩個類型的最大值和最小值:

運行結果如下:

注意:在Java語言中,小數在運行時,會遇到無窮的情況。針對這種情況,Java語言提供了NEGATIVE_INFINITY、POSITIVE_INFINITY和NaN 3個特殊值,本書會在后面進行介紹。

綜上,雙精度類型和浮點類型都是用來表示小數的,但是它們所占用的字節數和有效范圍不同,如表2.5所示。

表2.5 小數的類型

主站蜘蛛池模板: 额尔古纳市| 东宁县| 海安县| 枣阳市| 元朗区| 柳河县| 噶尔县| 萨嘎县| 都匀市| 旺苍县| 平远县| 英山县| 聊城市| 铅山县| 亳州市| 平阳县| 永安市| 蓬溪县| 玉山县| 新竹市| 雅安市| 舟山市| 尚义县| 兴宁市| 邢台市| 桃江县| 余干县| 丹寨县| 无锡市| 商丘市| 贵德县| 始兴县| 栾城县| 怀宁县| 合川市| 涿鹿县| 奉化市| 永州市| 绵阳市| 康乐县| 平顺县|