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