在JAVA / C ++中使用尾随字符

时间:2013-06-22 11:35:12

标签: java

我有点好奇为什么我们在 Java / C ++ 中使用尾随字符。像,

float f = 23f;

我们也可以写

float f = 23;

都有相同的效果。

3 个答案:

答案 0 :(得分:6)

当您在数学运算中对数字进行硬编码时,这很重要。

例如:

5 / 2 == 2
5.0f / 2.0f = 2.5f
5.0 / 2.0 = 2.5      // without the 'f' suffix you have doubles
5.0d / 2.0d = 2.5d   // for doubles 'd' can be used as well

这些也会有不同的结果:

blah / 3.141592653592  // this returns an accurate double
blah / 3.141592653592f // this returns a less accurate float

答案 1 :(得分:1)

这是因为在第二种情况下还有其他东西可以提供类型信息(即变量的类型)。在不需要后缀的情况下。

但是,在其他情况下,当必须从数字文字本身派生类型信息时,您可能需要它们。例如,请考虑以下两个表达式:

float f = 23 / 5;  // Integer division

VS

float f = 23f / 5; // Floating point division

使用和不使用后缀会得到不同的结果。

答案 2 :(得分:0)

它们具有相同的效果,但在第二步中还有一个额外的步骤。 23的数据类型为int。编译器几乎肯定会在编译时将23转换为float,但它必须检查该数字是否可以表示为float。它们占用相同的空间,因此有些整数不能表示为浮点数。请考虑以下Java代码:

int i   = 2147483647; // Integer.MAX_VALUE, but at compile time.
System.out.println(i);

float f = 2147483647; // Integer.MAX_VALUE, but at compile time.
System.out.println(f);

打印什么?

相关问题