float mX;
mX = (X - 32) / 17;//X 为int型用计算器算mX经常是除不尽的如:mX=2.7058823529411764705882352941176,但是程序中总是自动舍去了小数部分结果mX=2.0;如果把mX定义为double,也不行还是舍去小数部分。如果用 Math.Round((X - 32)/17,5),则会提示“调用不明确”估计是应为(X - 32) / 17部分不一定是小数。请问在c#里怎么才能使mX 的结果为小数,并且保留5位有效数字??

解决方案 »

  1.   

    float的精度只有7位,用double吧
      

  2.   

    decimal类型试试
    ============================
    不行,还是自动舍去小数了!
      

  3.   

    或用decimal, 再用decimal(mx,5) 来确保返回五位小数.
      

  4.   

    应该是 result = decimal.Round(mx, 5, MidpointRounding.ToEven)
    MidpointRounding.ToEven 只截取,不四舍五入
      

  5.   

    如果 result = 1 时,还要确保有五位小数,要用String.Format
    result.ToString("#,##0.00000")//输出: 1.00000
      

  6.   

      float mX; 
      mX = (X - 32) / 17;//X 为int型    改为:
      
      int cc = (X - 32);
      string bb =0;
      mX = cc / 17;//X 为int型 
      bb=(cc%17).Tostring();
      if(bb.length>7)
      {
        (bb.SubString(0,7)+mX.ToString();
      }
      else
      {
        for(int i=0;i<7-bb.length;i++)
        {
           bb+="0";
        }
        bb+mX.Tostring();
       }
      
      

  7.   

    这样不就可以了么?float mX;
    double y;     
    y = (x - 32) / 17.0;
    mX = (float)Math.Round(y, 5);
      

  8.   

     Math.Round((double)(X - 32)/17,5)