c# - 是否有理由在 C# 中始终声明类型后缀为 'f' 的 float ?

标签 c# floating-point literals suffix

创建浮点变量时,整数不需要类型后缀,即所有这些都是有效的:

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 范围。

至于效率,在33f之间,编译器应该为你优化。

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/

相关文章:

c# - 带有 Json.Net 格式化程序的 ChannelFactory

python - 打印出只有两个小数点的总数时出现问题 [Python 2.7]

php - -0 不等于 0

asp.net - 文字控制模式之间的差异

java - 我们如何在Java中编写 float 的二进制、八进制和十六进制文字?

javascript - 如何迭代字符串并查明它是否在对象文字中可用?

c# - 假设 this != null 在实现 IComparable<T> 时

c# - 在 C# 中实现存储稀疏数据的表的最有效方法是什么

c# - 死锁后重新提交事务

c# - 从二进制形式转换 float NaN 值,反之亦然会导致不匹配