java浮點(diǎn)數(shù)默認(rèn)類型 請(qǐng)問(wèn)浮點(diǎn)型數(shù)據(jù)在計(jì)算機(jī)是怎么存儲(chǔ)的?
請(qǐng)問(wèn)浮點(diǎn)型數(shù)據(jù)在計(jì)算機(jī)是怎么存儲(chǔ)的?計(jì)算機(jī)使用二進(jìn)制來(lái)表示數(shù)字,浮點(diǎn)數(shù)也一樣:首先,學(xué)習(xí)如何使用二進(jìn)制來(lái)表示十進(jìn)制(即如何將十進(jìn)制轉(zhuǎn)換為二進(jìn)制):舉個(gè)簡(jiǎn)單的例子,十進(jìn)制10.625 1)首先轉(zhuǎn)換整數(shù)部
請(qǐng)問(wèn)浮點(diǎn)型數(shù)據(jù)在計(jì)算機(jī)是怎么存儲(chǔ)的?
計(jì)算機(jī)使用二進(jìn)制來(lái)表示數(shù)字,浮點(diǎn)數(shù)也一樣:首先,學(xué)習(xí)如何使用二進(jìn)制來(lái)表示十進(jìn)制(即如何將十進(jìn)制轉(zhuǎn)換為二進(jìn)制):舉個(gè)簡(jiǎn)單的例子,十進(jìn)制10.625 1)首先轉(zhuǎn)換整數(shù)部分:10=1010b 2)十進(jìn)制0.625=0.101b(使用“整數(shù)乘以2”:0.625*2=1.25,得到第一個(gè)數(shù)字是1,0.25*2=0.5,得到第二個(gè)數(shù)字是0,0.5*2=1,得到第三個(gè)數(shù)字是1,其余的小數(shù)部分是0,你可以最后得到)3)然后得到10.625=1010.101b,對(duì)表達(dá)式的修改更深入的理解:1*(10^1)0*(10^0)6*(10^-1)2*(10^-2)5*(10^-3)=1*(2^3)0*(2^2)1*(2^0)1*(2^-1)0*(2^-2)1*(2^-3)4)同樣,十進(jìn)制可以指數(shù)形式表示:10.625=10625*(10^-3),得到的二進(jìn)制十進(jìn)制也可以指數(shù)形式表示:1010.101b=1010101*(2^-3),也就是說(shuō),它可以用有效數(shù)a表示,指數(shù)e:a*(2^e)存儲(chǔ)這樣的結(jié)果32位空間(位0~位31)中的一個(gè)浮點(diǎn)數(shù),因此分配存儲(chǔ)空間:位0~位22,共23位,用于表示有效數(shù)字部分,即a。在本例中,a=1010101,位23~位30,共8位,用于表示索引,即e,范圍從-128到127。實(shí)際數(shù)據(jù)中的索引是從原始索引加127得到的。如果它超過(guò)127,它從-128開始,所以這里e=-3是124位31是符號(hào)位,1是負(fù)數(shù),這里應(yīng)該是0。將上述結(jié)果填入32位內(nèi)存,即計(jì)算機(jī)代表十進(jìn)制10.625。注意這個(gè)例子的特殊性:它的小數(shù)部分只能用長(zhǎng)度有限的二進(jìn)制小數(shù)來(lái)表示。因此,整個(gè)有效數(shù)字部分a的總長(zhǎng)度小于23,因此它準(zhǔn)確地表示10.625。然而,在某些情況下,有效數(shù)字部分的長(zhǎng)度可能超過(guò)23,甚至無(wú)限長(zhǎng)。這時(shí),我們必須切掉下面的數(shù)字,這樣結(jié)果就只是一個(gè)近似值,而不是一個(gè)精確值。顯然,存儲(chǔ)長(zhǎng)度越長(zhǎng),精度就越高。例如,雙精度浮點(diǎn)數(shù)的長(zhǎng)度為64位、1個(gè)符號(hào)位、11個(gè)索引位和52個(gè)有效位。
請(qǐng)問(wèn)浮點(diǎn)型數(shù)據(jù)在計(jì)算機(jī)是怎么存儲(chǔ)的?
對(duì)于浮點(diǎn)數(shù)據(jù),使用單精度類型(float)和雙精度類型(double)存儲(chǔ)。浮點(diǎn)數(shù)據(jù)占用32位,雙精度數(shù)據(jù)占用64位。單精度和雙精度在存儲(chǔ)中分為三部分:符號(hào):0表示正,1表示負(fù)。
2. 指數(shù):用于存儲(chǔ)科學(xué)計(jì)數(shù)法中的指數(shù)數(shù)據(jù),采用移位存儲(chǔ)。
3. 尾數(shù):尾數(shù)。擴(kuò)展數(shù)據(jù)中有兩種類型的實(shí)變量:?jiǎn)尉群碗p精度。實(shí)數(shù)變量的格式和寫入規(guī)則與整數(shù)相同。例如:float x,y(x,y是單精度實(shí)型量)double a,B,C(a,B,C是雙精度實(shí)型量)實(shí)型常量被視為雙精度雙型,無(wú)論是單精度還是雙精度。
java浮點(diǎn)型數(shù)據(jù)表示方法有幾種,各是什么?
有兩種Java浮點(diǎn)數(shù)據(jù)類型:float和double。Float是單精度浮點(diǎn),占32位,其對(duì)應(yīng)的封裝類是Float。Double是雙精度浮點(diǎn),占64位,其對(duì)應(yīng)的封裝類是Double。有關(guān)float類和double類的詳細(xì)信息,請(qǐng)參閱javaapi。
注意
數(shù)據(jù)類型占用的位數(shù)范圍:
float表示3.4e-038~3.4e 038的數(shù)據(jù)范圍;
double表示1.7e-308~1.7e 308的數(shù)據(jù)范圍;
double比單精度類型float精度更高,表示范圍更大,并經(jīng)常用于科學(xué)計(jì)算等高精度場(chǎng)合。
變量定義示例
float f=123.456f//指定變量f為float類型
double D=123.456//指定變量D為double類型和默認(rèn)的浮點(diǎn)數(shù)類型
實(shí)數(shù)分為float類型和double類型,分別對(duì)應(yīng)ieee754標(biāo)準(zhǔn)中的單精度浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù)類型。存儲(chǔ)器中的存儲(chǔ)形式符合ieee754浮點(diǎn)標(biāo)準(zhǔn)。以浮點(diǎn)型數(shù)據(jù)為例,3.14159表示二進(jìn)制為11.00100100001111001111。。。歸一化后表示1.1001001000011001111×2^1(小數(shù)點(diǎn)后保留23位有效數(shù)字,因?yàn)镮EEE 754標(biāo)準(zhǔn)規(guī)定的尾數(shù)是23位);索引是1,所以順序碼是1 127=128=10000000;這是正數(shù),所以符號(hào)位是0,所以它在內(nèi)存中的表示是10000000 1001001000011001111,用十六進(jìn)制寫成40490fcf。
浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式~指數(shù)存放?
對(duì)于浮點(diǎn)數(shù)據(jù),使用單精度類型(float)和雙精度類型(double)存儲(chǔ)。浮點(diǎn)數(shù)據(jù)占用32位,雙精度數(shù)據(jù)占用64位。實(shí)際上,無(wú)論是浮點(diǎn)型還是雙精度型,計(jì)算機(jī)內(nèi)存的存儲(chǔ)方式都符合IEEE規(guī)范。Float符合IEEE r32.24,double符合r64.53。