ipk*_*iss 69 java floating-point
我不知道为什么在Java或其他语言中浮点值之后放置f或F?例如,
float fVariable = 12.3f;
Run Code Online (Sandbox Code Playgroud)
除了表明这是浮点值以外的任何其他功能?
Jig*_*shi 59
默认情况下12.3是double文字,所以告诉编译器将其视为float显式 - >它使用f或F
Per*_*ion 49
看到在程序中只有很多方法来表示数字,Java的设计者不得不挑选并将每个表单分配给最常见的用例.对于选择为默认的表单,表示确切类型的后缀是可选的.
所以,当你输入12你的程序时,那就是一个int文字,而不是12L,这是一个很长的.而当你键入12.3,那是一个双重的文字,而不是12.3F,这是一个浮动.
那么这与哪些相关?主要用于处理向下倾斜或缩小转换.无论何时将long转换为int,或将double转换为float,都存在数据丢失的可能性.因此,编译器会强制您通过发出类似这样的编译错误来指示您确实要执行缩小转换:
float f = 12.3;
Run Code Online (Sandbox Code Playgroud)
因为12.3代表一个double,你必须明确地将它转换为float(基本上在缩小转换时签名).否则,您可以通过使用正确的后缀来指示该数字实际上是浮点数;
float f = 12.3f;
Run Code Online (Sandbox Code Playgroud)
总而言之,必须为longs和floats指定后缀是语言设计者选择的一种妥协,以便平衡指定究竟是什么数字的需要,以及将数字从一种存储类型转换为另一种存储类型的灵活性.
Pet*_*rey 25
float并且double只能为某些值提供近似表示值.例如12.3或0.1
不同之处在于浮点数不那么准确(因为它的精度较低,因为它较小)
例如
System.out.println("0.1f == 0.1 is " + (0.1f == 0.1));
System.out.println("0.1f is actually " + new BigDecimal(0.1f));
System.out.println("0.1 is actually " + new BigDecimal(0.1));
Run Code Online (Sandbox Code Playgroud)
版画
0.1f == 0.1 is false
0.1f is actually 0.100000001490116119384765625
0.1 is actually 0.1000000000000000055511151231257827021181583404541015625
Run Code Online (Sandbox Code Playgroud)
所以0.1是最接近的表示,double并且0.1f是最接近的表示float
浮动 fVariable = 12.3; 很好。但是当您在任何表达式中仅使用浮点值(没有任何标识符)时,您需要告诉编译器该值是浮点数,因此我们在值后使用后缀“f”。例子
浮动 fl = 13f/5f;
这里 13 和 5 是浮点值。
| 归档时间: |
|
| 查看次数: |
70850 次 |
| 最近记录: |