为什么 f 放在 float 值之后?

新手上路,请多包涵

我不知道为什么在Java或其他语言中f或F放在float值之后?例如,

 float fVariable = 12.3f;

除了指示这是一个浮点值之外还有什么特征?

原文由 ipkiss 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 412
2 个回答

默认情况下 12.3double 文字。告诉编译器将其视为 float 显式 -> 使用 fF

请参阅 有关基本类型的教程页面

原文由 jmj 发布,翻译遵循 CC BY-SA 4.0 许可协议

鉴于在您的程序中表示数字的方式只有这么多,Java 的设计者不得不挑选每一种形式并将其分配给最常见的用例。对于那些默认选择的形式,表示确切类型的 后缀 是可选的。

  • 对于整数文字 (int, long),默认值为 int 。出于显而易见的原因。
  • 对于浮点文字 (float, double),默认值为 double 。因为使用 double 可能允许对存储值进行 更安全 的算法。

因此,当您在程序中键入 12 时,这是一个 int 文字,而不是 12L ,后者是一个 long 。当您键入 12.3 时,这是一个 文字,而不是 12.3F ,它是一个 float

那么这有什么关系呢?主要用于处理向下转换或缩小转换。每当您将 long 向下转换为 int,或将 double 向下转换为 float 时,都存在数据丢失的可能性。因此,编译器将强制您表明您 确实 要执行缩小转换,方法是针对以下内容发出编译错误信号:

 float f = 12.3;

因为 12.3 表示双精度数,所以您必须将其显式转换为浮点数(基本上是在收缩转换上签字)。否则,您可以通过使用正确的后缀来表明该数字确实是一个浮点数;

 float f = 12.3f;

总而言之,必须为 longfloat 指定后缀是语言设计者选择的折衷方案,以便平衡指定数字到底是什么的需要,以及将数字从一种存储类型转换为另一种存储类型的灵活性。

原文由 Perception 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题