浮点字面值,浮点数字面量,双精度数字字面量。

6
在Java中,“floating point literal”和“floating literal”是相同的吗?
另外,在Java中是否有称为“double literal”的东西?

1
你能把你找到这个内容的源文本发一下吗? - Travis
我从未找到它。我正在阅读有关文字的内容,突然想到了这个问题。 - Shinjinee Maiti
这是浮点数字面值的定义:https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.2 - Bubletan
3个回答

14
“浮点数字面量”是指任何浮点类型的数字面量。其中,floatdouble都是浮点数类型。
我以前从未听说过“浮点字面量”的术语,但我认为意思与“浮点数字面量”相同。不过您应该确保向作者请求澄清,因为如果作者想表达的是“float字面量”,那么它将仅表示特定类型float的字面量,而不是一般的任何浮点类型。
至于Java中特定类型的浮点字面量,除非您附加 fF,否则所有以#.#形式呈现的数字面量都是double类型。这将强制将其转换为float
请查看Oracle的原始数据类型教程页面。下面是复制的子标题“浮点字面量”。

浮点字面量

如果浮点文字以字母F或f结尾,则浮点文字的类型为float;否则,它的类型为double,并且可以选择以字母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. 浮点文字面量

float字面量的示例:

1e1f    2.f    .3f    0f    3.14f    6.022137e+23f

double字面量的例子:

1e1    2.    .3    0.0    3.14    1e-9d    1e137

好的,让我澄清一下......“浮点字面量”既指float和double数据类型,“浮点字面值”则特指float数据类型,至于“浮点字面”的说法(根据您所知),是不存在的。 - Shinjinee Maiti
2
@ShinjineeMaiti 正确。虽然我应该澄清一下,“浮点字面量”可以指任何浮点数据类型。(这很重要,因为除了Java之外的语言还有比floatdouble更多的浮点类型,例如long double)。 - Travis

3

Java有带有f后缀的float字面量(例如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

这两个可以被视为浮点字面量,因为doublefloat都是浮点类型。


1
如果以Ff结尾,"floating-point literal"将会是float类型;否则它是double类型。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接