在計算技術(shù)發(fā)展的某個階段,中央處理單元顯然需要硬件設(shè)備來處理浮點數(shù)。今天,所有計算機架構(gòu)都可以有效地處理這些數(shù)字。當(dāng)然,在編程語言中,您也不能沒有相應(yīng)的數(shù)據(jù)類型。Java 中有兩種浮點數(shù)據(jù)類型:浮點型和雙精度型。java浮關(guān)鍵字定義在內(nèi)存中占據(jù) 32 位的實數(shù)。我們將在本文中討論這些數(shù)字。
浮點數(shù)。實數(shù)如何存儲在計算機中?
為了在計算機內(nèi)存中存儲實數(shù),需要分配一定數(shù)量的位。實數(shù)存儲為符號(加號或減號)、螳螂和指數(shù)。什么是尾數(shù)和指數(shù)最好用一個例子來解釋。月球的近似質(zhì)量是7 * 1022。這里7是螳螂,在22中是指數(shù)。當(dāng)在屏幕上顯示大數(shù)字或反之亦然時,您可以看到像7E22這樣的條目。這是浮點數(shù),這里的7是螳螂,22是10的指數(shù)或冪。這種表示法稱為指數(shù)表示法。
java浮點關(guān)鍵字和爪哇雙關(guān)鍵字
Java 中的浮點值(浮點數(shù)或?qū)崝?shù))由以下類型表示浮和雙.正是這些關(guān)鍵字用于存儲小數(shù)點后某個符號的值。雙是具有雙精度的數(shù)字,盡可能接近給定值或作為計算結(jié)果獲得的值。java島雙用于任何數(shù)學(xué)計算(平方根、正弦、余弦、..),以及所有需要一定精度的計算。浮數(shù)據(jù)類型用于不太精確的浮點類型。為了節(jié)省內(nèi)存,很少使用它。下面我們有一個表格,其中包含有關(guān)浮動和雙精度的主要信息,以及它們的差異。
所以浮keyword 表示一個數(shù)字,即在內(nèi)存中占用 32 位或 4 個字節(jié)的單精度值。在某些處理器上,處理這些數(shù)字的速度更快,并且如前所述,與具有雙精度的數(shù)字相比,它們占用的空間更少。但是,不可能用速度明確地說出來。假設(shè)一些現(xiàn)代處理器處理雙精度數(shù)字的速度更快。
java浮點和雙重聲明
您可以聲明一些類型雙與其他類型的數(shù)字相同:但是,如果以這種方式表示浮點數(shù),編譯器將要求您將數(shù)字的類型更改為雙精度。這是一個不正確的示例:
浮變量:運行此程序時會發(fā)生什么:事實是,使用浮點數(shù)是不可取的,這應(yīng)該只是為了節(jié)省內(nèi)存。Java中的所有實數(shù)小數(shù)都是
雙默認(rèn)情況下,該語言的語法也強調(diào)了這一點。如果確實要使用 float 類型,則需要使用以數(shù)字結(jié)尾的 f 顯式指定它。 順便說一句,浮點數(shù)和雙精度數(shù)可以以指數(shù)形式編寫。 如果您在“正常”表示中使用足夠大的數(shù)字,Java將立即以指數(shù)形式顯示它們。讓我們舉個例子:這個程序工作的結(jié)果在這里:
特殊浮點數(shù)和雙精度數(shù)示例
Java語言中有三個特殊的浮點數(shù),用于指示溢出和錯誤。它們分別是:
正無窮大是將正數(shù)除以 0 的結(jié)果。由常量表示Double.POSITIVE_INFINITY和Float.POSITIVE_INFINITY.
負無窮大是將負數(shù)除以 0 的結(jié)果。由Double.NEGATIVE_INFINITY和Float.NEGATIVE_INFINITY常數(shù)。
NaN(不是數(shù)字)表示 0/0 的計算或取負數(shù)的平方根。由常量表示雙鈉和浮子楠.
下面是使用這些特殊浮點數(shù)的示例:結(jié)果是:
雙精度是否足夠?
事實上,盡管精度為雙精度雙type,例如,在財務(wù)計算中使用浮點數(shù)不是最好的主意,因為舍入錯誤是不可接受的。因此,請嘗試在屏幕上顯示以下程序的輸出。 您將獲得以下結(jié)果:
假設(shè)結(jié)果將為 0.9 是合乎邏輯的。但是,此類錯誤非常常見,并且與數(shù)字的內(nèi)部二進制表示有關(guān)。例如,我們不能將1/3的確切值表示為小數(shù);當(dāng)然,在二進制系統(tǒng)中也有類似的限制。如果任務(wù)需要消除舍入錯誤,Java 具有大十進制類為此。