是否有理由总是使用类型后缀';f';在C#中?

是否有理由总是使用类型后缀';f';在C#中?,c#,C#,创建浮点变量时,整数不需要类型后缀,即所有类型后缀都有效: public float distance = 3; public float distance = 3f; public float distance = 0.3f; 是否有理由使用3f而不是3?编译器是否足够聪明,能够将类型识别为float并自动强制转换它 相关问题: 及 两者都解释了为什么我们需要使用类型后缀“f”,但是有没有一种“正确”的方法来声明具有整数值的浮点?有一种方法更有效吗?如果您编写float dist=3可以不使

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

public float distance = 3;
public float distance = 3f;
public float distance = 0.3f;
是否有理由使用
3f
而不是
3
?编译器是否足够聪明,能够将类型识别为float并自动强制转换它

相关问题: 及


两者都解释了为什么我们需要使用类型后缀“f”,但是有没有一种“正确”的方法来声明具有整数值的浮点?有一种方法更有效吗?

如果您编写
float dist=3可以不使用
f
。但在您指定的
对象距离=3f
那么您需要
f
,否则它将被定义为整数。

在第三个示例中,对
f
后缀的需要变得很明显:

public float distance = 0.3f;

如果删除
f
0.3
将被解释为
double
,并将生成编译错误,因为
double
不能隐式向下转换并分配给
float
变量。在这种情况下,您需要指定
0.3
是浮点文本。

语用学。f不是必需的。但是,请注意,不带“f”后缀的小数被解释为双精度,这是一种更精确但内存昂贵的原语。考虑以下事项:

public float distance = 3.123456789123456;

本作业的右侧首先被解释,如果没有“f”的含义,则被视为双重含义。这里将发生编译器错误。因为浮点数精度较低(保留小数点后7位,而保留小数点后15位),您将失去精度,并且变量“距离”现在将在3.123457左右更精确。

以下是允许的列表。当目标类型可以保持原始类型范围时,允许隐式转换。在这种情况下,
浮动距离=0.3是一个错误,因为浮动范围不能容纳双范围

至于效率,在
3
3f
之间,编译器应该为您进行优化

IL_0001:  ldc.r4     3.   // float distance1 = 3;
IL_0006:  stloc.0
IL_0007:  ldc.r4     3.   // float distance2 = 3f;
IL_000c:  stloc.1

另外:framwork中有一些方法重载依赖于显式编写的浮点参数。只是一个旁注,因为我看到了您的编辑,类型后缀可以是大写或小写。在这个页面上有一个非常好的答案看看:@UmairNisarBajwaOMAIR我已经在我的questionCorrect中链接了这个问题,但是如果它是整数,我不需要使用
f
显式地将其声明为浮点,但是有没有理由将其声明为浮点,而不考虑其值?i、 e.我应该总是添加
f
还是仅仅是偏好?那么假设我有一个函数,它接受三个浮点数
无效位置(浮点数x,浮点数y,浮点数z)
,并且我传递整数
位置(2,5,18)
,使用类型后缀会更好吗<代码>位置(2f,5f,18f)
或者影响很小吗?如果我真的需要一个
浮点值,我会养成使用后缀的习惯,因为通常情况下,我希望大多数值都有小数部分,在这种情况下,后缀是必需的。如果您总是在传递整数值,那么您可能会想,首先为什么要使用
float
数据类型,其中我仍然需要类型为float,但我要乘以一个常量整数。无论哪种方法都没有什么区别,但我只是好奇关于使用类型后缀是否有一个“不成文的规则”。好吧,那么这真的只是你是否应该添加带有整数的
f
?为了进一步阐述关于精度的观点,如果要添加f
public float distance=3.123456789123456f
然后打印出该距离,由于float type.Xander-Correct的准确性,结果将是
3.123456
。关于整数的真正意义在于方便您自己和以后与您一起工作的其他开发人员。当您有一个包含多个变量的复杂项目时,有时很高兴看到:public float distance=3.0f;而不是公共浮动距离=3;是的,公共浮动距离=3.123456789123456f;我只会记录小数点后7位。哦,这很有趣,我有兴趣知道的是,在编译之后,它是否真的有区别,或者它们是相同的,在这里看起来,编译器足够聪明,可以使它们保持相同,所以最终它的首选项和可读性。谢谢仅供参考,您可以使用该工具查看IL。