在一些C#代码中我看过这样的staments:
float someFloat = 57f;
Run Code Online (Sandbox Code Playgroud)
我想知道为什么我们应该像f上面的情况一样使用文字?
Mar*_*ell 12
主要是因此编译器确切地知道我们的意思 - 特别是对于重载分辨率:
Foo(57f);
Run Code Online (Sandbox Code Playgroud)
应该打电话Foo(int)/ Foo(float)/ Foo(decimal)?
实际上,我不喜欢记住事物 - 另一种选择是:
float someFloat = (float)57;
Run Code Online (Sandbox Code Playgroud)
这不是运行时强制转换 - 它是相同的(在IL级别)57f.它唯一不同的是decimal具有额外精度的s:
decimal someDecimal = (decimal)57.0; // same as 57M, not 57.0M (scale is different)
Run Code Online (Sandbox Code Playgroud)
And*_*ite 11
上面的"f"是类型后缀.这告诉编译器提供的文字的确切类型.这是使用的,因此编译器可以为文字分配适当的存储量(精度).默认情况下,浮点文字的存储空间为"double".如果添加"f"作为后缀,则文字只会获得浮点数的存储空间,精度会降低.
double d = 50.1234; // given double storage
double d = 50.1234f; // given float storage, which might lose precision compared to double
Run Code Online (Sandbox Code Playgroud)
默认情况下,赋值运算符右侧的实数值文字被视为 double。因此,要初始化浮点变量,请使用后缀 f 或 F,例如:
float x = 3.5F;
Run Code Online (Sandbox Code Playgroud)
如果您在前面的声明中不使用后缀,则会收到编译错误,因为您试图将 double 值存储到 float 变量中。
来自MSDN:浮动
| 归档时间: |
|
| 查看次数: |
2047 次 |
| 最近记录: |