为什么 f 放在浮点值之后?

2022-08-31 11:02:53

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

float fVariable = 12.3f;

除了指示这是一个浮点值之外,还有其他任何功能吗?


答案 1

默认情况下为文字。要告诉编译器将其显式视为 ->请使用 或 。12.3doublefloatfF

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


答案 2

由于在程序中表示数字的方法只有这么多,Java的设计者不得不挑选并将每个表单分配给最常见的用例。对于选择为默认值的那些表单,表示确切类型的后缀是可选的。

  • 对于整数文本(整型,长整型),默认值为整型文本。原因显而易见。
  • 对于浮点文本(浮点型、双精度型),默认值为双精度型。因为使用双精度可能会对存储的值进行更安全的算术运算。

因此,当您键入程序时,这是一个int文本,而不是,后者很长。当您键入 时,这是一个字面体,而不是 ,后者是一个浮点数1212L12.312.3F

那么这有什么关系呢?主要用于处理下行或缩小转化范围。每当您将多头向下倾斜为整数,或将双精度向下转换为浮动时,都存在数据丢失的可能性。因此,编译器将强制您指示您确实要执行窄化转换,方法是发出编译错误的信号,如下所示:

float f = 12.3;

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

float f = 12.3f;

总而言之,必须为长整型和浮点型指定后缀是语言设计人员选择的一种折衷方案,以便平衡指定数字究竟是什么的需求,以及将数字从一种存储类型转换为另一种存储类型的灵活性。