150天打卡day03_基本數(shù)據(jù)類型浮點(diǎn)型
浮點(diǎn)數(shù)類型
Java中利用浮點(diǎn)數(shù)來存儲(chǔ)“小數(shù)”,有兩種數(shù)據(jù)類型float和double,float是單精度浮點(diǎn)數(shù),double叫做雙精度浮點(diǎn)數(shù),什么為精度呢?精度其實(shí)就是指所存儲(chǔ)有效尾數(shù)的長度?,之所以叫做浮點(diǎn)數(shù),而不是叫做小數(shù)是因?yàn)樵诖鎯?chǔ)小數(shù)的時(shí)候需要將小數(shù)點(diǎn)的位置進(jìn)行移動(dòng)(浮動(dòng)),所以稱之為是浮點(diǎn)數(shù),說白了本質(zhì)就是在數(shù)學(xué)課中的科學(xué)計(jì)數(shù)法,可以計(jì)算非常大的數(shù)值.

IEEE-754: 是"電氣電子工程師學(xué)會(huì)(IEEE)"定義的754號(hào)標(biāo)準(zhǔn)。是被各種編程語言廣泛采用的浮點(diǎn)數(shù)標(biāo)準(zhǔn)。
float類型
float:單精度浮點(diǎn)類型 占用32位內(nèi)存空間
float單倍精度浮點(diǎn)數(shù),采用32位2進(jìn)制存儲(chǔ)的浮點(diǎn)數(shù),其中1位表示正負(fù)的符號(hào)位,8位存儲(chǔ)指數(shù), 23位存儲(chǔ)尾數(shù)。由于浮點(diǎn)數(shù)中分別保存了數(shù)字的尾數(shù)和指數(shù),當(dāng)指數(shù)大時(shí)候,其范圍就會(huì)變得非常大,所以采用浮點(diǎn)數(shù)的好處是可以存儲(chǔ)非大的數(shù)字,如:3.14乘以10的20次冪。
使用浮點(diǎn)數(shù)需要注意的點(diǎn):
float浮點(diǎn)數(shù)的直接量有兩種寫法:
通常寫法:3.5F? 88.68F? 適合通常小數(shù)
指數(shù)形式:3.3452E100F或者 1.234E-5F
默認(rèn)的浮點(diǎn)數(shù)直接量是double類型,若要給float類型的變量賦字面量的值,則要在字面量后面加F(或f)
float不能精確表示10進(jìn)制小數(shù),保存數(shù)據(jù)時(shí)候存在尾數(shù)的舍入(四舍五入)誤差
float類型共32位,1位為符號(hào)位,指數(shù)8位,尾數(shù)23位,(float的精度是23位,即能準(zhǔn)確表達(dá)23位的數(shù),超過就被截取了)
float存儲(chǔ)的數(shù)據(jù)的范圍比int類型大,但精度比int小,因?yàn)閕nt的精度是31位。
Java 也提供了BigDecimal用于實(shí)現(xiàn)超?精度小數(shù)計(jì)算。
案例:
注意:使用浮點(diǎn)數(shù)會(huì)存在舍入誤差,這是正常的情況,如果想使用精確的運(yùn)行,可以使用BigDecimal
double類型
double 是雙倍精度浮點(diǎn)數(shù),其內(nèi)部采用64位2進(jìn)制存儲(chǔ)的浮點(diǎn)數(shù),其中1位表示正負(fù)的符號(hào)位,11位存儲(chǔ)指數(shù), 52位存儲(chǔ)尾數(shù)。因?yàn)閐ouble的尾數(shù)是float尾數(shù)兩倍多,顧稱為雙倍精度浮點(diǎn)數(shù),這就是double的由來。double不僅尾數(shù)長,指數(shù)位也大,所以double的表示的范圍非常大,利用double完全可以輕松處理宇宙級(jí)別的數(shù)字。由于double范圍足夠大所以Java就不再需要更大的數(shù)據(jù)類型了。
Java 也提供了BigDecimal用于實(shí)現(xiàn)超高精度小數(shù)計(jì)算。

?
使用double要注意:
由于double表示的數(shù)據(jù)更精確,所以默認(rèn)的小數(shù)直接量是double類型,如:2.8 4.5
可以使用D/d后綴表示double類型的直接量,如:2.5D 5D
double也支持指數(shù)形式賦值: doube d = 356.5E8
由于double精度高,計(jì)算更加精確,大多數(shù)場合使用double類型
double也不能精確表示10進(jìn)制小數(shù),保存數(shù)據(jù)時(shí)候存在尾數(shù)的舍入(四舍五入)誤差,相對(duì)于flfloat來說更加精確。?
浮點(diǎn)數(shù)直接量是double類型
浮點(diǎn)數(shù)的直接量有兩種寫法:
1)通常寫法,如:3.14、314、0.1、.5。
2)科學(xué)計(jì)數(shù)法,如:1.25E2、1.25e2、1.25E-2。其中,1.25E2表示1.25乘以10的2次方。
默認(rèn)的浮點(diǎn)直接量為double型,如果需要表示float類型的直接量,需要加“f”或“F”后綴。
double運(yùn)算時(shí)會(huì)出現(xiàn)舍入誤差
2進(jìn)制系統(tǒng)中無法精確的表示1/10,就好像十進(jìn)制系統(tǒng)中無法精確的表示1/3一樣,
所以,2進(jìn)制表示10進(jìn)制會(huì)有一些舍入誤差,對(duì)于一些要求精確運(yùn)算的場合會(huì)導(dǎo)致代碼的缺陷。
如果需要精確的運(yùn)算可以考慮放棄使用double或float而采用BigDecimal?類來實(shí)現(xiàn)
浮點(diǎn)數(shù)的計(jì)算
有浮點(diǎn)數(shù)參加的數(shù)學(xué)運(yùn)算稱之為是浮點(diǎn)數(shù)運(yùn)算,如果有一方不是浮點(diǎn)數(shù)將其轉(zhuǎn)換為浮點(diǎn)數(shù)再進(jìn)行運(yùn)算,浮點(diǎn)數(shù)計(jì)算結(jié)果是浮點(diǎn)數(shù),簡單理解就是小數(shù)與小數(shù)計(jì)算得到小數(shù),浮點(diǎn)數(shù)計(jì)算是會(huì)存在誤差的。
浮點(diǎn)類型總結(jié)
浮點(diǎn)類型共2種:float和double
分別是單精度和雙精度,雙精度使用較多。
注意使用浮點(diǎn)數(shù)計(jì)算存在的問題,需要多加練習(xí)。
還沒有結(jié)束哦,小可愛繼續(xù)移步到下一篇,wink~
