我正在完成一项家庭作业(我不是一个可以撒谎的人)而且老老实实地对这些问题感到困惑。我有3年的编程经验,但我对课堂上一些最简单的问题感到困惑,哈哈。 Java新手,不是编程新手。我想讨论为什么问题会导致答案以及为什么会出现这样或那样的问题。
1)写3.4,这是双重还是浮动?
我想默认它是一个浮点数,因为它占用较少的空间(32位)而不是双(64)位。由于3.4是一个小数字,我会认为它是一个浮点数?
2)将x声明为double并将其赋值为3.4(作为double)。
我认为double x = 3.4d;
对此
3)将y声明为float并为其赋值3.4(作为float)。
与上述类似,我认为是float y = 3.4f;
通常不会有人来这里以这种方式请求硬件帮助...但是我刚刚订购的时候没有其他一周的教科书。我宁愿讨论为什么它是这样或那样的,这样我就可以更好地理解Java的工作原理。感谢。
答案 0 :(得分:2)
关于第一个问题,3.4
是double
。如果您想要float
字面值,则可以使用3.4f
。
第二个问题:
double x = 3.4; // trailing D/d is optional and rarely used.
第三个问题,您是正确的,将其声明为float
并在文字上使用f
后缀。
有关详细信息,请参阅here,特别是此处复制的名为Floating-Point Literals
的部分,对重点进行了少量修改:
如果浮点字面值以字母F或f结尾,则浮点字面值为float类型;否则它的类型是双倍的,它可以选择以字母D或d结尾。
浮点类型(浮点数和双精度数)也可以使用 E 或 e (科学计数法), F 或<表示strong> 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;
答案 1 :(得分:1)
f
来获得一个浮动。;
。答案 2 :(得分:0)
Java float literals默认为double,就像指定了d
修饰符一样。如果需要32位浮点数,则必须明确说明f
修饰符。
答案 3 :(得分:0)
答案 4 :(得分:0)
如果它是浮动意味着你必须声明像这样的浮动y = 3.4 * f * .f表示jvm它是一个浮点数。如果你忘了f(3.4f)它会对待它默认为double,需要64位
答案 5 :(得分:0)
来自你的评论:
I'm curious, why are they doubles by default
(恕我直言)我认为高精度优于低精度。 Java(在C语言中也是如此)可以在尝试时下转换为浮点数,因此这不会导致问题。