我们为什么要在C#中使用文字?

pra*_*ptp 8 c#

在一些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)


Gar*_*Ray 5

默认情况下,赋值运算符右侧的实数值文字被视为 double。因此,要初始化浮点变量,请使用后缀 f 或 F,例如:

float x = 3.5F;
Run Code Online (Sandbox Code Playgroud)

如果您在前面的声明中不使用后缀,则会收到编译错误,因为您试图将 double 值存储到 float 变量中。

来自MSDN:浮动