我有点好奇为什么我们在 Java / C ++ 中使用尾随字符。像,
float f = 23f;
我们也可以写
float f = 23;
都有相同的效果。
答案 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);
打印什么?