2013-04-03 133 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语言中的相同事物)在尝试时可以下变换为浮点,所以这个东西不会导致问题。