Java中的'浮点字面值'和'浮动字面值'是一样的吗?
此外,Java中有什么称为“双重文字”吗?
答案 0 :(得分:11)
“浮点文字”是指任何浮点类型的文字。 float
和double
都是浮点类型。
我之前从未遇到过“浮动文字”一词,但我认为其意图与“浮点文字”相同。 你应该确保要求澄清,因为如果作者打算说“浮动文字”,那么特别是float
类型的文字,而不仅仅是任何浮动 - 点类型一般。
对于Java中特定类型的浮点文字,一般形式#.#
的所有文字都是double
,除非你附加f
或F
(同一个)区别于文字强制它为float
。
请查看Oracle的Primitive Data Types上的教程页面。我已经复制了下面标题为“浮点文字”的小节。
浮点文字
浮点字面值的类型为float,如果它以字母F结尾 或f;否则它的类型是双倍的,它可以选择以 字母D或d。
也可以表示浮点类型(float和double) 使用E或e(用于科学记数法),F或f(32位浮点字面值) 和D或d(64位双字面;这是默认值和 约定被省略。)
double d1 = 123.4; // same value as d1, but in scientific notation double d2 = 1.234e2; float f1 = 123.4f;
正如@Bubletan在评论中提到的那样,如果你真的很好奇,你可以查看浮点文字的实际Java规范:§3.10.2. Floating-Point Literals
float
文字的示例:1e1f 2.f .3f 0f 3.14f 6.022137e+23f
double
文字的示例:1e1 2. .3 0.0 3.14 1e-9d 1e137
答案 1 :(得分:3)
Java有两个float
文字标有f
后缀(例如,2.5f)和double
文字,它们不需要后缀(例如2.5)
当您尝试将这些文字分配给变量时,可以证明两者之间的差异:
double dl = 2.5; // passes compilation
float fl1 = 2.5; // error - "Type mismatch: cannot convert from double to float"
float fl2 = 2.5f; // passes compilation
两者都可以被视为浮点文字,因为double
和float
都是浮点类型。
答案 2 :(得分:1)
"浮点文字"如果以F
或f
结尾,则为浮点类型;否则它是双重的