Why is the quot;fquot; required when declaring floats?(为什么是“f?声明浮动时需要?)
问题描述
例子:
float timeRemaining = 0.58f;
为什么这个数字的末尾需要f
?
Why is the f
is required at the end of this number?
推荐答案
你的浮点声明包含两部分:
Your declaration of a float contains two parts:
- 它声明变量
timeRemaining
的类型是float
. - 它将值
0.58
分配给该变量.
- It declares that the variable
timeRemaining
is of typefloat
. - It assigns the value
0.58
to this variable.
问题出现在第 2 部分.
The problem occurs in part 2.
右侧是自行评估的.根据 C# 规范,包含没有后缀的小数点的数字被解释为 double
.
The right-hand side is evaluated on its own. According to the C# specification, a number containing a decimal point that doesn't have a suffix is interpreted as a double
.
所以我们现在有一个 double
值,我们希望将其分配给 float
类型的变量.为了做到这一点,必须有一个从 double
到 float
的隐式转换.没有这样的转换,因为您可能(并且在这种情况下确实)在转换中丢失了信息.
So we now have a double
value that we want to assign to a variable of type float
. In order to do this, there must be an implicit conversion from double
to float
. There is no such conversion, because you may (and in this case do) lose information in the conversion.
原因是编译器使用的值并不是真正的 0.58,而是最接近 0.58 的浮点值,即 double
为 0.57999999999999978655962351581366... 而 恰好为 0.579999946057796478271484375>浮动
.
The reason is that the value used by the compiler isn't really 0.58, but the floating-point value closest to 0.58, which is 0.57999999999999978655962351581366... for double
and exactly 0.579999946057796478271484375 for float
.
严格来说,f
不是必需的.您可以通过将值转换为 float
来避免使用 f
后缀:
Strictly speaking, the f
is not required. You can avoid having to use the f
suffix by casting the value to a float
:
float timeRemaining = (float)0.58;
这篇关于为什么是“f"?声明浮动时需要?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么是“f"?声明浮动时需要?


- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04
- C# 中多线程网络服务器的模式 2022-01-01
- 如何用自己压缩一个 IEnumerable 2022-01-01
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- MoreLinq maxBy vs LINQ max + where 2022-01-01
- WebMatrix WebSecurity PasswordSalt 2022-01-01
- 输入按键事件处理程序 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01