Java:为什么需要在浮点文字中指定'f'?为什么需要f在浮点文字中指定后缀?
3 回答
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
因为否则它默认为double
,这是比更加常用的浮点类型float
。
如果浮点文字后缀为ASCII字母F或f,则其类型为float。否则,其类型为double,并且可以选择在其后缀ASCII字母D或d(第4.2.3节)。
(我个人希望没有默认值,以便在所有情况下都清楚一点,但这是另一回事。)
BIG阳
TA贡献1859条经验 获得超6个赞
因为未加后缀的浮点文字是双精度的,所以舍入意味着即使四舍五入到浮点和双精度的小字面量也可以采用不同的值。在以下示例中可以看到:
float f = (float) 0.67;if(f == 0.67) System.out.print("yes");else System.out.print("no");
这将输出no
,因为四舍五入为float时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");
ABOUTYOU
TA贡献1812条经验 获得超5个赞
有两种浮点类型可以表示为例如100.0
。默认值只能是一个。由于精度有限,因此float是一种非常专业的类型。正常情况是double,因此它是适当的默认值。
在现代处理器上,float和double具有相似的计算性能。使用浮点数的唯一情况是在要求有限精度的性能至关重要的情况下使用大型数组。使用浮点数会使一个缓存行中的浮点值的数量加倍。即使那样,计算浮点数是否能为给定的计算提供足够的精度仍然很少。
添加回答
举报
0/150
提交
取消