課程
/后端開(kāi)發(fā)
/Java
/Java入門(mén)第一季(IDEA工具)升級(jí)版
為什么float賦值要加f,double不用呢? ?不都是小數(shù)嗎 只不過(guò)精度不同
2016-03-13
源自:Java入門(mén)第一季(IDEA工具)升級(jí)版 2-6
正在回答
JAVA是一種強(qiáng)類(lèi)型語(yǔ)言,你在做賦值運(yùn)算的時(shí)候其實(shí)等號(hào)兩邊的類(lèi)型都是確定的,能賦值成功,要么兩邊類(lèi)型一致,要么兩邊類(lèi)型具備某種關(guān)系(繼承或者實(shí)現(xiàn)),要么編譯器通過(guò)上下文可以判定。比如:
byte?x?=?1;
1是個(gè)整數(shù)字面量,是int類(lèi)型,這個(gè)值在byte類(lèi)型的范圍之內(nèi),這個(gè)時(shí)候編譯器會(huì)幫你做類(lèi)型轉(zhuǎn)換,只留下int類(lèi)型8位,前面的0都去掉。而在JAVA中浮點(diǎn)類(lèi)型的字面量類(lèi)型默認(rèn)是double,但是由于float類(lèi)型和double類(lèi)型在內(nèi)存中的二進(jìn)制表現(xiàn)形式不同:一個(gè)8位;一個(gè)4位。編譯器在編譯的時(shí)候掃描到了一個(gè)25.6,在不帶F的情況下,它會(huì)判斷這是double類(lèi)型,應(yīng)該創(chuàng)建一個(gè)8個(gè)字節(jié)的空間來(lái)存放;帶上F,編譯器就會(huì)創(chuàng)建一個(gè)4字節(jié)的空間來(lái)存放。float不能像整形那樣有時(shí)會(huì)默認(rèn)轉(zhuǎn)換,必須要確定類(lèi)型,帶上F。
jackrabbit 提問(wèn)者
不同之處有四處:
單精度浮點(diǎn)數(shù)(float)與雙精度浮點(diǎn)數(shù)(double)的區(qū)別如下:
(1)在內(nèi)存中占有的字節(jié)數(shù)不同
單精度浮點(diǎn)數(shù)在機(jī)內(nèi)占4個(gè)字節(jié)
雙精度浮點(diǎn)數(shù)在機(jī)內(nèi)占8個(gè)字節(jié)
(2)有效數(shù)字位數(shù)不同
單精度浮點(diǎn)數(shù)有效數(shù)字8位
雙精度浮點(diǎn)數(shù)有效數(shù)字16位
(3)所能表示數(shù)的范圍不同
單精度浮點(diǎn)的表示范圍:-3.40E+38 ~ +3.40E+38
雙精度浮點(diǎn)的表示范圍:-1.79E+308 ~ +1.79E+308
(4)在程序中處理速度不同一般來(lái)說(shuō),CPU處理單精度浮點(diǎn)數(shù)的速度比處理雙精度浮點(diǎn)數(shù)快
至于要加F是因?yàn)榫褪沁@么規(guī)定的……如果不加F的話他會(huì)認(rèn)為你是用的Double型……
qq_緐華丗堺沁透誐白勺錑眸_0 回復(fù) jackrabbit 提問(wèn)者
舉報(bào)
0基礎(chǔ)萌新入門(mén)第一課,從Java環(huán)境搭建、工具使用、基礎(chǔ)語(yǔ)法開(kāi)始
1 回答double是雙精度,float是單精度,為什么不用float、
2 回答只有float要在賦值時(shí)在數(shù)值后加字母嗎?double不需要?
2 回答float賦值為什么要加f捏
2 回答float賦值后加F和不加F,為何輸出不一樣
2 回答為什么只能用double而不能用float?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2016-03-13
JAVA是一種強(qiáng)類(lèi)型語(yǔ)言,你在做賦值運(yùn)算的時(shí)候其實(shí)等號(hào)兩邊的類(lèi)型都是確定的,能賦值成功,要么兩邊類(lèi)型一致,要么兩邊類(lèi)型具備某種關(guān)系(繼承或者實(shí)現(xiàn)),要么編譯器通過(guò)上下文可以判定。比如:
byte?x?=?1;
1是個(gè)整數(shù)字面量,是int類(lèi)型,這個(gè)值在byte類(lèi)型的范圍之內(nèi),這個(gè)時(shí)候編譯器會(huì)幫你做類(lèi)型轉(zhuǎn)換,只留下int類(lèi)型8位,前面的0都去掉。
而在JAVA中浮點(diǎn)類(lèi)型的字面量類(lèi)型默認(rèn)是double,但是由于float類(lèi)型和double類(lèi)型在內(nèi)存中的二進(jìn)制表現(xiàn)形式不同:一個(gè)8位;一個(gè)4位。編譯器在編譯的時(shí)候掃描到了一個(gè)25.6,在不帶F的情況下,它會(huì)判斷這是double類(lèi)型,應(yīng)該創(chuàng)建一個(gè)8個(gè)字節(jié)的空間來(lái)存放;帶上F,編譯器就會(huì)創(chuàng)建一個(gè)4字節(jié)的空間來(lái)存放。float不能像整形那樣有時(shí)會(huì)默認(rèn)轉(zhuǎn)換,必須要確定類(lèi)型,帶上F。
2016-03-13
不同之處有四處:
單精度浮點(diǎn)數(shù)(float)與雙精度浮點(diǎn)數(shù)(double)的區(qū)別如下:
(1)在內(nèi)存中占有的字節(jié)數(shù)不同
單精度浮點(diǎn)數(shù)在機(jī)內(nèi)占4個(gè)字節(jié)
雙精度浮點(diǎn)數(shù)在機(jī)內(nèi)占8個(gè)字節(jié)
(2)有效數(shù)字位數(shù)不同
單精度浮點(diǎn)數(shù)有效數(shù)字8位
雙精度浮點(diǎn)數(shù)有效數(shù)字16位
(3)所能表示數(shù)的范圍不同
單精度浮點(diǎn)的表示范圍:-3.40E+38 ~ +3.40E+38
雙精度浮點(diǎn)的表示范圍:-1.79E+308 ~ +1.79E+308
(4)在程序中處理速度不同
一般來(lái)說(shuō),CPU處理單精度浮點(diǎn)數(shù)的速度比處理雙精度浮點(diǎn)數(shù)快
至于要加F是因?yàn)榫褪沁@么規(guī)定的……如果不加F的話他會(huì)認(rèn)為你是用的Double型……