Jon*_*eet 50
因为否则它默认为double
,这是一种比它更常用的浮点类型float
.
如果浮点文字后缀为ASCII字母F或f,则浮点文字的类型为float; 否则其类型为double,并且可以选择以ASCII字母D或d(§4.2.3)为后缀.
(我个人认为没有违约,在所有情况下都要说清楚,但这是另一回事.)
Gri*_*han 34
因为unsuffixed浮点文字是双倍的,并且舍入意味着即使是小文字在舍入为float和double时也可以采用不同的值.这可以在以下示例中观察到:
float f = (float) 0.67;
if(f == 0.67)
System.out.print("yes");
else
System.out.print("no");
Run Code Online (Sandbox Code Playgroud)
这将输出no
,因为当舍入为浮动时,0.67具有与舍入为double时不同的值.另一方面:
float f = (float) 0.67;
if(f == 0.67f)
System.out.print("yes");
else
System.out.print("no");
Run Code Online (Sandbox Code Playgroud)
...输出yes
.
编辑
第二个例子:
if(0.67 == 0.67f)
System.out.print("Equal");
else
System.out.print("Not Equal");
Run Code Online (Sandbox Code Playgroud)
有两种浮点类型可以表示为例如100.0
。默认值只能是一个。由于精度有限,因此float是一种非常专业的类型。正常情况是double,因此它是适当的默认值。
在现代处理器上,float和double具有相似的计算性能。使用浮点数的唯一情况是在要求有限精度的性能至关重要的情况下使用大型数组。使用浮点数会使一个缓存行中的浮点值的数量加倍。即使这样,找出浮点数是否能为给定的计算提供足够的精度仍然很少。
归档时间: |
|
查看次数: |
24036 次 |
最近记录: |