码迷,mamicode.com
首页 > Windows程序 > 详细

C#处理四舍五入的问题

时间:2015-05-05 19:24:42      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

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

技术分享double d1 = Math.Round(1.25, 1);//1.2
技术分享double d2 = Math.Round(1.24, 1);//1.2
技术分享double d3 = Math.Round(1.26, 1);//1.3
技术分享double d4 = Math.Round(1.35, 1);//1.4

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

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

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

C#处理四舍五入的问题

标签:

原文地址:http://www.cnblogs.com/zhangzhixiong/p/4479773.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!