亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么float賦值要加f,double不用呢? 不都是小數嗎 只不過精度不同

為什么float賦值要加f,double不用呢? ?不都是小數嗎 只不過精度不同

正在回答

2 回答

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。

0 回復 有任何疑惑可以回復我~
#1

jackrabbit 提問者

理解了,謝謝。
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型……

1 回復 有任何疑惑可以回復我~
#1

jackrabbit 提問者

也就是說我定義float類型 但是在數據后面沒有添加F 系統會自動判斷為double型嗎? 有點不懂 C里面float是自動轉化成double的,所以一直認為float和double一樣
2016-03-13 回復 有任何疑惑可以回復我~
#2

qq_緐華丗堺沁透誐白勺錑眸_0 回復 jackrabbit 提問者

同 問
2016-03-22 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么float賦值要加f,double不用呢? 不都是小數嗎 只不過精度不同

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號