2013-04-03 95 views
1

我正在做一個家庭作業(我不是一個人說謊),而且我老實地難住了這些問題。我有3年的編程經驗,但是我很難在課堂上遇到一些最簡單的問題,哈哈。 Java新手,而不是編程新手。我想討論爲什麼這些問題會得出答案,以及爲什麼這樣或那樣。基本的Java語法問題

1)寫3.4,這是雙精度還是浮點精度?

我想說默認情況下它是一個浮點數,因爲它佔用較少的空間(32位)與雙倍(64)位。由於3.4是一個很小的數字,我會認爲它是一個浮點數?

2)將x聲明爲double,並將其賦值爲3.4(作爲double)。

我認爲這是在此

3肯定double x = 3.4d;不是100%)聲明ý作爲浮子和分配給它的值3.4(如浮法)。

上面類似,我認爲這是float y = 3.4f;

不通常是一到這裏來的,並要求以這種方式HW幫助...但我沒有課本一個星期,因爲我只是下令。我想討論爲什麼它是這樣或那樣,以便我可以更好地理解Java的工作方式。謝謝。

+1

查看「Floating-point文字」這一節:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html – NilsH

回答

2

關於第一個問題,3.4double。如果你想要一個float文字,你可以使用3.4f


第二個問題:

double x = 3.4; // trailing D/d is optional and rarely used. 

第三個問題,你是正確的,它聲明爲float和使用f後綴上的文字。


更多細節參見here,具體題爲Floating-Point Literals的部分,在這裏拷貝,稍作修改爲強調:

甲浮點文字的類型爲float如果它與字母F結束或f;否則它的類型是雙重的,並且可以選擇以字母D或d結尾。

浮點類型(浮點和雙精度)也可以使用ëË(用於科學記數法),˚F˚F(32位浮點字面)和d表示d(64位雙字面量; 這是默認值,按慣例被省略)。

double d1 = 123.4; 
double d2 = 1.234e2; // same value as d1, but in scientific notation 
float f1 = 123.4f; 
+0

爲什麼Java選擇默認使用double而不是float? – MasterGberry

+0

因爲這就是規格說明。 C和C++做類似的事情。坦白地說,花車在過去的日子裏很有用,但除非你真的迫切需要更小的範圍/存儲空間,否則你應該使用雙打。 – paxdiablo

+0

夠公平的。感謝您的信息:) – MasterGberry

1
  1. 3.4是雙,把f後得到浮動。
  2. 正確,但請記得在行尾加上;
  3. 同上。
+0

在';'上的Derp。我很好奇,他們爲什麼默認雙打? – MasterGberry

+0

浮點數並不精確,他們希望您指定不需要更高的精度。 – Pietu1998

+0

好的......謝謝:) – MasterGberry

0

默認情況下,Java float文本是雙倍的,就像您指定d修飾符一樣。如果您需要32位浮點數,則必須明確指定f修飾符。

0
  1. 默認情況下java認爲float文字是double。因此3.4是雙倍的。
  2. double x = 3.4;
  3. 你寫的是正確的。
+0

只有一個nitpick,jack,decimal指的是基數(10),所以3是3.4的小數。我懷疑你的意思是說浮點而不是小數。不是說它會減損你的回答,只是有時候我覺得挺肛門保留:-) – paxdiablo

+0

是的,有意義,修正:) –

0

如果浮動意味着你必須聲明這樣的浮動Y = 3.4 * ˚F * .F指示JVM這是一個float.ifü忘記,F(3.4f)將當作雙默認情況下,它需要64位

0

從您的評論:

I'm curious, why are they doubles by default 

(恕我直言)我覺得高精度比低精度更好。 Java(C語言中的相同事物)在嘗試時可以下變換爲浮點,所以這個東西不會導致問題。