从" Double to Float"舍入小数位

时间:2016-02-24 14:08:42

标签: c# casting floating-point

任何人都可以帮助我理解为什么float的输出是十进制的四舍五入?

代码 -

static void Main(string[] args)
{
    float f = (float)Math.Round(Convert.ToDouble("270825.27000000000000"), 2);
    double d = Math.Round(Convert.ToDouble("270825.27000000000000"), 2);

    Console.WriteLine("Float  - " + f.ToString());
    Console.WriteLine("Double - " + d.ToString());

    Console.Read();
}

输出

enter image description here

先谢谢。

1 个答案:

答案 0 :(得分:1)

你要投两倍浮动,所以基本上你有:

  1. 转换为 double ,但应该浮动
  2. 舍入 double
  3. 铸造

     float f = (float)Math.Round(float.Parse("270825.27000000000000"), 2);
     double d = Math.Round(Convert.ToDouble("270825.27000000000000"), 2);    
     Console.WriteLine("Float  - " + f.ToString());    
     Console.WriteLine("Double - " + d.ToString());
    
  4. 结果是:

      

    Float - 270825.3

         

    Double - 270825.27

    所以使用十进制

    decimal f = (decimal)Math.Round(decimal.Parse("270825.27000000000000"), 2);
    Console.WriteLine("Decimal  - " + f.ToString());
    
      

    270825.27