在处理一些数据时,我们希望能用“四舍五入”法实现,但是C#采用的是“四舍六入五成双”的方法,如下面的例子,就是用“四舍六入五成双”得到的结果:

C#处理四舍五入的问题-LMLPHPdouble d1 = Math.Round(1.25, 1);//1.2
C#处理四舍五入的问题-LMLPHPdouble d2 = Math.Round(1.24, 1);//1.2
C#处理四舍五入的问题-LMLPHPdouble d3 = Math.Round(1.26, 1);//1.3
C#处理四舍五入的问题-LMLPHPdouble d4 = Math.Round(1.35, 1);//1.4

为了用C#来实现“四舍五入”,我写了下面的函数:

C#处理四舍五入的问题-LMLPHP/// <summary>
C#处理四舍五入的问题-LMLPHP    /// 实现数据的四舍五入法
C#处理四舍五入的问题-LMLPHP    /// </summary>
C#处理四舍五入的问题-LMLPHP    /// <param name="v">要进行处理的数据</param>
C#处理四舍五入的问题-LMLPHP    /// <param name="x">保留的小数位数</param>
C#处理四舍五入的问题-LMLPHP    /// <returns>四舍五入后的结果</returns>
C#处理四舍五入的问题-LMLPHP    private double Round(double v, int x)
C#处理四舍五入的问题-LMLPHP    {
C#处理四舍五入的问题-LMLPHP        bool isNegative = false;
C#处理四舍五入的问题-LMLPHP        //如果是负数
C#处理四舍五入的问题-LMLPHP        if (v < 0)
C#处理四舍五入的问题-LMLPHP        {
C#处理四舍五入的问题-LMLPHP            isNegative = true;
C#处理四舍五入的问题-LMLPHP            v = -v;
C#处理四舍五入的问题-LMLPHP        }
C#处理四舍五入的问题-LMLPHP
C#处理四舍五入的问题-LMLPHP        int IValue = 1;
C#处理四舍五入的问题-LMLPHP        for (int i = 1; i <= x; i++)
C#处理四舍五入的问题-LMLPHP        {
C#处理四舍五入的问题-LMLPHP            IValue = IValue * 10;
C#处理四舍五入的问题-LMLPHP        }
C#处理四舍五入的问题-LMLPHP        double  Int = Math.Round(v * IValue + 0.5,0);
C#处理四舍五入的问题-LMLPHP        v = Int / IValue;
C#处理四舍五入的问题-LMLPHP        
C#处理四舍五入的问题-LMLPHP        if (isNegative)
C#处理四舍五入的问题-LMLPHP        {
C#处理四舍五入的问题-LMLPHP            v = -v;
C#处理四舍五入的问题-LMLPHP        }
C#处理四舍五入的问题-LMLPHP
C#处理四舍五入的问题-LMLPHP        return v;
C#处理四舍五入的问题-LMLPHP    }

经过简单的测试,上面的函数能实现对数据的四舍五入法。

05-11 11:23