好的我在这里有几个值:
'F', 0xf, 070, 70L, 77e-1f, 7.7f, 7.77e1, 77.7
我知道'F'
是char
,70L
的类型为long
。另外,我知道0xf
是十六进制(对吗?),070
是八进制。但那些其他数字是什么?为什么地狱是77.7
double
而不是float
呢?
答案 0 :(得分:1)
您正在寻找的是this
77.7
:浮点字面值的类型为float,如果它以字母F结尾 或f;否则它的类型是双倍的,它可以选择以 字母D或d。
0xf
不属于hex
类型。没有类型hex
。它只是一个int
十六进制的wirtten。就像070
是用八进制写的int
一样。
文字77e-1f
显然是一个浮点数,因为它以f
结尾。
e
为exponent
,即77e-1f
实际上是77 * 10^(-1)
或7.7
。文字7.77e1
是双倍的,出于同样的原因,77.7
是双倍的,7.77e1
等于7.77 * 10 ^ 1
= 77.7
。
答案 1 :(得分:0)
你唯一没有解释过的两个:
7.7f
f表示浮动 - 它表示这不应该是 double 文字,但是,浮动一个!默认情况下,您会看到任何"浮点"文字自动为 double 类型,你需要" f"为了强制执行"较小的"浮动类型。
并且
77e-1f
正在使用科学记数法,请参阅here以获取进一步说明。
答案 2 :(得分:0)
为什么地狱是77.7倍并且不漂浮?
浮动数字必须在末尾用f
表示,但双数字最后不需要d
。
77e-1f
是一个 float 数字77
,相当于10^-1
,所以它等于7.7
。
与7.77e1
== 77.7
答案 3 :(得分:0)
在Java中,包含点的数字文字默认为double类型。如果你想要一个浮点数,你可以附加f
。
包含e
的数字是指数式或科学式,但我不打算在此解释,因为它与编程无关。
答案 4 :(得分:0)
77e-1 表示:
77
是数字乘数,e
(或E
)表示base 10
,{{1 }表示指数。
结果是-1
由(77
提供10
)或-1
提供77
,i。即的 .1
强>
此表示法的名称为科学或对数,适用于非常大或非常小的数字,例如: G。 7.7
可以表示为1 million = 1.000.000