中易网

c#中int向float型转换。

答案:3  悬赏:40  
解决时间 2021-01-11 18:57
  • 提问者网友:刺鸟
  • 2021-01-11 08:45
c#中int向float型转换。
最佳答案
  • 二级知识专家网友:青灯有味
  • 2021-01-11 09:54
楼主观察很细微啊。int到float转换精度会降低,如果需要较高精度,应该考虑使用double类型。如下分析:
第一点:从int(System.Int32)到float转换精度会降低。如下代码:
static void Main(string[] args)
{
Int32 number = Int32.MaxValue;
Console.WriteLine(number);
Console.WriteLine((float)number);
Console.ReadLine();
}
输出为:
2147483647
2.147484E+09
明显有效位数减少。

第二点:MSDN中有如下描述:
可在一个表达式中兼用数值整型和浮点型。在此情况下,整型将转换为浮点型。根据以下规则计算表达式:
如果其中一个浮点型为 double,则表达式的计算结果为 double 类型,在关系表达式或布尔表达式中为 bool 类型。
如果表达式中不存在 double 类型,则表达式的计算结果为 float 类型,在关系表达式或布尔表达式中为 bool 类型。

这样,如果表达式中只有int和float,可能得不到应有的精度,因此应该考虑将float转成double之后再进行运算。

共同探讨~~参考资料:C#.NET2.0
全部回答
  • 1楼网友:一袍清酒付
  • 2021-01-11 11:01
float的存储位是32比特,定义其为7位有效数字,这里的7位有效数字是说精度,不是说范围.
你可以使用double或decimal
其中double也使用double.ToString("0.000");来控制精度
  • 2楼网友:风格不统一
  • 2021-01-11 10:54
float的精度是指有效数字的位数,不一定是指小数点后位数。float型数据也是用32位存储,由于有阶码,所以损失了部分精度。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息