为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

尚方宝剑之说 2019-09-26 15:03:59
Java:为什么需要在浮点文字中指定'f'?为什么需要f在浮点文字中指定后缀?
查看完整描述

3 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

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

根据Java语言规范的第3.10.2节

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

(我个人希望没有默认值,以便在所有情况下都清楚一点,但这是另一回事。)


查看完整回答
反对 回复 2019-09-26
?
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");


查看完整回答
反对 回复 2019-09-26
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

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

在现代处理器上,float和double具有相似的计算性能。使用浮点数的唯一情况是在要求有限精度的性能至关重要的情况下使用大型数组。使用浮点数会使一个缓存行中的浮点值的数量加倍。即使那样,计算浮点数是否能为给定的计算提供足够的精度仍然很少。


查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 448 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信