定义
的区别是什么double example = 23.1d
或
double example = 23.1
为什么长,浮动和双重可以以l,f,d结束?
答案 0 :(得分:5)
double example = 23.1d;
和double example = 23.1;
之间没有区别,因为没有类型后缀的浮点文字总是被解释为double。
类型后缀是必要的,以避免在某些情况下出现歧义。
例如,java支持方法重载。这意味着您可以void x( float f );
和void x( double d );
这两种方法都称为x
;将选择哪一个取决于您通过的类型;如果你传递一个已知为float或double的变量,事情就很清楚;但是如果你想传递一个文字,比如:x( 5 );
那么你必须能够指定你是指这个5是浮点数还是双数,以便选择正确的方法。
还有一些其他非常微妙的情况,其中文字的类型很重要。例如,以下代码:
System.out.println( "" + (2/3.3333) );
System.out.println( "" + (2/3.3333f) );
产生以下输出:
0.6000060000600006
0.600006
...因为第一个数字是double,而第二个数字是float。
类似的消歧问题使得" L"长整数文字所必需的类型后缀。
答案 1 :(得分:0)
23.1d(或仅为23.1,因为double是默认值)与23.1f不同。由于23.1不能精确表示,23.1f是最接近23.1的浮点数,并且只有大约6个有效数字。作为一个双,23.1将有大约16个有效数字,因此可以更接近实际值。
请注意
double example = 23.1f;
相当于
float f = 23.1f;
double example = (double)f;