我不知道为什么在Java或其他语言中f或F放在float值之后?例如,
float fVariable = 12.3f;
除了指示这是一个浮点值之外还有什么特征?
原文由 ipkiss 发布,翻译遵循 CC BY-SA 4.0 许可协议
我不知道为什么在Java或其他语言中f或F放在float值之后?例如,
float fVariable = 12.3f;
除了指示这是一个浮点值之外还有什么特征?
原文由 ipkiss 发布,翻译遵循 CC BY-SA 4.0 许可协议
鉴于在您的程序中表示数字的方式只有这么多,Java 的设计者不得不挑选每一种形式并将其分配给最常见的用例。对于那些默认选择的形式,表示确切类型的 后缀 是可选的。
因此,当您在程序中键入 12
时,这是一个 int 文字,而不是 12L
,后者是一个 long 。当您键入 12.3
时,这是一个 双 文字,而不是 12.3F
,它是一个 float 。
那么这有什么关系呢?主要用于处理向下转换或缩小转换。每当您将 long 向下转换为 int,或将 double 向下转换为 float 时,都存在数据丢失的可能性。因此,编译器将强制您表明您 确实 要执行缩小转换,方法是针对以下内容发出编译错误信号:
float f = 12.3;
因为 12.3 表示双精度数,所以您必须将其显式转换为浮点数(基本上是在收缩转换上签字)。否则,您可以通过使用正确的后缀来表明该数字确实是一个浮点数;
float f = 12.3f;
总而言之,必须为 long 和 float 指定后缀是语言设计者选择的折衷方案,以便平衡指定数字到底是什么的需要,以及将数字从一种存储类型转换为另一种存储类型的灵活性。
原文由 Perception 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.2k 阅读
8 回答5.9k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
默认情况下
12.3
是double
文字。告诉编译器将其视为float
显式 -> 使用f
或F
。请参阅 有关基本类型的教程页面。