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