java中用float時,數字後面加f,這樣是為什麼你知道嗎

Java float 與 double 的區別

1、float是單精度浮點數

內存分配4個字節,占32位,有效小數位6-7位

double是雙精度浮點數,內存分配8個字節,占64位,有效小數位15位

2、java中默認聲明的小數是double類型的

如double d=4.0

如果聲明: float x = 4.0則會報錯,需要如下寫法:float x = 4.0f或者float x = (float)4.0

其中4.0f後面的f隻是為瞭區別double,並不代表任何數字上的意義

3、對編程人員來而

double 和 float 的區別是double精度高,但double消耗內存是float的兩倍,且double的運算速度較float稍慢。

Java float、double、long類型變量賦值添加f、d、L尾綴問題

1、添加尾綴說明 

我們知道Java在變量賦值的時候,其中float、double、long數據類型變量,需要在賦值直接量後面分別添加f或F、d或D、l或L尾綴來說明。

其中,long類型最好以大寫L來添加尾綴,因為小寫l容易和數字1混淆。

例如:

long lNum  = 1234L;
float fNum = 1.23f;
double dNum = 1.23d;

這是Java語法規定,不添加尾綴很容易引起編譯器報錯,並且程序可讀性也會變差。

2、不添加尾綴也不會報錯的情況  

Java語言中,整數直接量(例如:1、2、10等),JVM虛擬機是默認為int類型數據的。所以,當整數直接量賦給long、float或者double,而不添加尾綴,虛擬機也會直接將int類型數據自動轉換為對應類型然後賦值。因為數據長度短的轉換為長的並不會造成數據丟失,所以默認可以自動轉換。   

例如:

long  lNum  = 5;   //不報錯,因為int自動轉換為long類型,不會報錯
float fNum  = 7;   //不報錯,因為int自動轉換為float類型,不會報錯
double dNum = 10;  //同上

  

但是,當浮點直接量(例如:1.2等),JVM虛擬機默認為double類型,如果直接賦值給float就會引起編譯器報錯。

float fNum  = 1.2; //報錯,因為1.2虛擬機是默認為double類型,不能直接賦值給float類型變量
float fNew  = 1.3f;//正確,因為尾綴添加瞭f,即告訴瞭虛擬機1.3屬於float類型變量

3、總結  

所以,當Java中遇到這三種類型變量需要賦直接量時候,最好都添加上相應的尾綴。這樣不僅會防止編譯器報錯,也會增加程序的可讀性。  

但是下面這種情況就算添加尾綴也是錯的,因為尾綴僅是為瞭告訴虛擬機該直接數屬於什麼數據類型,而不能實現數據類型強制轉換。

long lNum = 1.2L;      //錯誤,double類型數據不能直接賦值給long類型
long lNew = (long)1.2; //正確,double類型數據強制轉換為long類型

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: