2017-08-07 80 views
2

爲什麼該行的浮點數被視爲雙?我認爲浮動有足夠的空間來保存這個數字。爲什麼浮點數333.50是雙

float f = (float)333.50; 
+11

'333.50'是雙文字時使用。一個浮點文字將是'333.50f'。基本上,double是默認值。 – khelwood

+0

在C和C++中,*類型*取決於文字的大小,儘管是整數類型。這是一個公平的問題。 – Bathsheba

回答

0

默認浮點文字是在java中double,如果你想要的值浮動,你可以在默認情況下對待任何小數點值作爲雙爲此

float f = 333.5f 
1

333.50是文字double類型。這只是一個規則 - 它來自1970年代的C語言。這就像0int類型的文字。

等價的float文字是333.5f,或者您可以使用編譯時可評估的常量表達式,如(float)333.50

事實上333.5可以表示準確作爲float因爲它是一個二進有理數。

0

這是你如何在Java(JLS

int a = 12; 
long b = 12L; 
float c = 12.0f; 
double d = 12.0d; 

定義文本所以你可以寫那些等;

i = 1222; 

是文字整數

,並以同樣的方式

j = 3.1415; 

是雙字面

當然

可以顯式定義類型:

i = 1222L; //for long values 
j = 3.1415f; //for float values 
2

因爲... e Java規範說,默認情況下,浮點文字是一個double值。

浮點文本

浮點字面是float類型的,如果它與字母Ff結束;否則其類型是double並且它可以與 字母Dd任選結束。

而不是使用一個收縮轉換(doublefloat),只需使用F前綴在字面的聲明:

float f = 333.50F; 
3

333.50可以在float類型來表示的值,但是一個雙字面值。使用333.50F有一個浮點數字
該規範,參見Oracle Java documentation about Primitive Data Types,明確不同的文字:

浮點文本

浮點字面是float類型的,如果它與字母Ff結束;否則其類型爲double,並且可以選擇以字母Dd結尾。

沒有爲整數文字但這裏較小的類型(int)一個類似的情況下是默認的:

整數常量

文字的整數類型long如果它以字母Ll結尾;否則它是int類型的。建議您使用大寫字母L,因爲小寫字母l很難與數字1區分。

0

的Java。所以您需要特別定義您正在使用哪種類型的原始數據類型。 例如:

`int i=10;   // default 
long l=123456L; 
float f=123.12F; 
double d=123.12345; // default 

` 所以你必須明確地定義什麼類型的數據類型不使用默認的類型

相關問題