float Num = 0.1256f;
            string mNum = Num.ToString("#0.000");
                       MessageBox.Show(mNum);在.net里,现在的mNum=0.126,而我要的答案是小数点后面是0.125,不需要四舍五入,请问该怎么做

解决方案 »

  1.   

    substring() 这个感觉比较耗时,所以排除不用,另外有没有其他的方法?
      

  2.   


    string mNum =( Math.Floor(Num*1000)/1000).ToString();
    substring()排除这两种,还有没有其他的办法
      

  3.   


    string mNum = (Math.Truncate(Num * 1000) / 1000.0f).ToString("0.000");
      

  4.   

    感觉跟string mNum =( Math.Floor(Num*1000)/1000).ToString();
    这个一样,占内存
      

  5.   

    .Net没有四舍五入算法,只有IEEE标准中的Banker's Round,也就是银行家舍入,即四舍六入五取偶。
    要在.net里实现四舍五入,只有通过类似4楼的方法
      

  6.   

    Math.Truncate()向(零)舍去小数部分
      

  7.   

    float Num = 0.1256f;
    string mNum = Math.Round(Num, 3).ToString("#0.000");
      

  8.   

    Round好象就是四舍六入五取偶。
      

  9.   

                float Num = 0.1256f;
                Console.WriteLine( Regex.Match(Num.ToString(),@"[\d]+.[\d]{0,3}"));
      

  10.   

    大哥我试了,(int)(num*1000)/1000;这样根本没用
      

  11.   

      string mNum = (Num-0.0005).ToString("#0.000");
      

  12.   

    Math.Round(3.44, 1); //Returns 3.4.
    Math.Round(3.45, 1); //Returns 3.4.
    Math.Round(3.46, 1); //Returns 3.5.
      

  13.   

    float Num = 0.1256f;
    Num=Num-0.0005f;
                string mNum = Num.ToString("#0.000");
                           MessageBox.Show(mNum);
      

  14.   

    当然(int)(Convert.ToInt32(num * 1000) / 1000)
      

  15.   

    Convert.ToInt32(num * 1000) / 1000.0f
      

  16.   

    Convert.ToInt32(125.6)是四舍五入的
    (int)125.6是不会四舍五入的
      

  17.   


                float Num = 0.1256f;
                string pattern=@"(?s)\d{1}[.]{1}\d{3}";
                Regex regex = new Regex(pattern);
                Console.WriteLine(regex.Match(Num.ToString()).Value);
      

  18.   

    咱说句实话,楼主要是嫌耗资源耗内存什么的,根本就不应该用c#。绝对的,.net平台下的都不能用,java也是。你想想,这类语言本来就是要极大地消耗资源的。这样吧,用汇编,mov来mov去的,还随心所欲。
      

  19.   


    //为满足四舍五入,作以下处理,加上一个极小的数
    prevValue = prevValue + 0.000001m;
    //得到四舍五入后的人数
    gradeNum = (int)Math.Round(prevValue, 0);