创建浮点变量时,整数不需要类型后缀,即所有这些都是有效的:
public float distance = 3;
public float distance = 3f;
public float distance = 0.3f;
是否有理由使用 3f
而不是 3
?编译器是否足够聪明,可以将类型识别为 float 并自动转换它?
相关问题: Why Should we use literals in C#和 Why is the "f" required when declaring floats
两者都解释了为什么我们需要使用类型后缀“f”,但是是否有一种“正确”的方式来声明具有整数值的 float ?有一种方法更有效吗?
最佳答案
这是允许的列表 Implicit Numeric Conversions .当目标 type 可以容纳原始 type 范围时,允许隐式转换。在这种情况下,float distance = 0.3;
是一个错误,因为浮点范围不能容纳 double 范围。
至于效率,在3
和3f
之间,编译器应该为你优化。
IL_0001: ldc.r4 3. // float distance1 = 3;
IL_0006: stloc.0
IL_0007: ldc.r4 3. // float distance2 = 3f;
IL_000c: stloc.1
关于c# - 是否有理由在 C# 中始终声明类型后缀为 'f' 的 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35371779/