c# - 为什么在声明 float 时需要 "f"?

标签 c# floating-point

例子:

float timeRemaining = 0.58f;

为什么这个数字的末尾需要 f

最佳答案

您的 float 声明包含两部分:

  1. 声明变量timeRemaining类型为 float .
  2. 它赋值0.58到这个变量。

问题出现在第 2 部分。

右侧是自行求值的。根据 C# 规范,包含小数点但没有后缀的数字被解释为 double。 .

所以我们现在有一个 double我们要分配给 float 类型变量的值.为此,必须从 double 进行隐式转换。至 float .没有这样的转换,因为您可能(在这种情况下确实)在转换中丢失信息。

原因是编译器使用的值并不是真正的 0.58,而是最接近 0.58 的浮点值,即 0.57999999999999978655962351581366... 对于 double和 0.579999946057796478271484375 对于 float .

严格来说,f不需要。您可以避免使用 f通过将值转换为 float 来添加后缀:

float timeRemaining = (float)0.58;

关于c# - 为什么在声明 float 时需要 "f"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11519743/

相关文章:

c++ - Qt中浮点的强制点而不是逗号

bash - 将浮点变量转换为整数?

c# - 转换简单的 JavaScript 代码

c# - 是否可以从 DetailsView 中的 CheckboxField 中提取 Checked 状态?

c# - 列为复选框并使用转换器时的无效操作异常

floating-point - 并行性: Subtly different floating point results?

Python 浮点格式

c++ - 将 float 数组与 int 数组进行比较

c# - 将 MYSQL 中的参数化命令一起批处理

c# - asp .net 核心 wcf 端点