Java:为什么需要在float文字中指定'f'?

时间:2012-12-31 14:47:27

标签: java floating-point

为什么需要在float文字中指定后缀f

3 个答案:

答案 0 :(得分:49)

因为否则默认为double,这是比float更常用的浮点类型。

来自Java Language Specification, section 3.10.2

  

浮点文字的类型为float,如果后缀为ASCII字母F或f;否则其类型为double,并且可以选择以ASCII字母D或d为后缀(§4.2.3)。

(就我个人而言,我宁愿没有默认,在所有情况下都要说清楚,但这是另一回事。)

答案 1 :(得分:32)

因为未填充的浮点文字是双倍的,并且舍入意味着即使是小文字在舍入为float和double时也可以采用不同的值。这可以在以下示例中观察到:

float f = (float) 0.67;
if(f == 0.67) 
  System.out.print("yes");
else 
  System.out.print("no");  

这将输出no,因为当舍入为浮点数时,0.67具有与舍入为double时不同的值。另一方面:

float f = (float) 0.67;
if(f == 0.67f) 
  System.out.print("yes");
else 
  System.out.print("no");

...输出yes

修改
第二个例子:

if(0.67 == 0.67f) 
  System.out.print("Equal");
else 
  System.out.print("Not Equal");  

答案 2 :(得分:5)

有两种浮点类型可以表示为例如100.0。只有一个可能是默认值。由于其精度有限,浮动是一种非常专业的类型。正常情况是双重的,因此它是适当的默认值。

在现代处理器上,float和double具有类似的计算性能。使用float的唯一情况是在需要有限精度的性能关键情况下使用大型数组。使用float会使适合一个缓存行的浮点值的数量加倍。即使这样,确定浮点数是否能给出给定计算的足够精度也很少。