在项目中一个需要计算的字段,他是几个数的乘积,奇怪的问题是:比如乘积结果是234.5的时候,该字段就是显示234;如果是234.34时显示是234;如果是234.56时显示是235.我要的就是后两种情况的结果,怎么让乘积结果是234.5时显示235呢?郁闷中!!!

解决方案 »

  1.   

    public static double Round(double d, int i)
            {
                if(d >=0)
                {
                    d += 5 * Math.Pow(10, -(i + 1));
                }
                else
                {
                    d += -5 * Math.Pow(10, -(i + 1));
                }
                string str = d.ToString();
                string[] strs = str.Split('.');
                int idot = str.IndexOf('.');
                string prestr = strs[0];
                string poststr = strs[1];
                if(poststr.Length > i)
                {
                    poststr = str.Substring(idot + 1, i);
                }
                string strd = prestr + "." + poststr;
                d = Double.Parse(strd);
                return d;
            }
    参数:d表示要四舍五入的数;i表示要保留的小数点后为数。
      

  2.   

    M$总晃惦人,C#里Math.Round()似乎在做舍入计算的时候没那么好用,简直可以说是“五舍六入”啦~~~刚开始不知道这茬,计算结果总不对。后来,跟了程序才发现这方法居然忽悠了我。没法子,既然这么不好用,或者说这么没有中国特色,只能自己搞点中国特色出来了。重写Round():
      

  3.   

    把那个数转成double再计算,
    最后Math.Round(计算结果)
      

  4.   

    用Math.Round 四捨五入 函數
      

  5.   

    各位的方法我都找啦,在其他的地方可能好使,这里不好用。有没有向这样的方法。
    if(小数点后是.5)
    {
      //执行1
    }
    else
    {
      //执行2
    }
    这样的方法呢?
      

  6.   

    Math.Round(value, decimals, MidpointRounding.AwayFromZero);
      

  7.   

    Round:
    当 d 正好位于两个舍入值的正中间时,结果将是最右边小数位中有偶数位的舍入值。例如,当舍入为两位小数时,值 2.345 变成 2.34,而值 2.355 变成 2.36。此过程称为向偶舍入或就近舍入。此方法的行为遵循 IEEE 标准 754 的第 4 节。这种舍入有时称为就近舍入或银行家舍入。