加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Unity之路(十三)- C#四舍五入(绝对好使)

(2013-11-26 10:56:08)
标签:

c四舍五入

分类: 修炼Unity
1.  C#中没有“四舍五入”,它采用的是“四舍六入五成双”。为了用C#来实现“四舍五入”,我写了下面的函数:

整体思想就是: (value*10+0.5)取整(注意是向下取整),再除以10。

//参数value为要处理的浮点数,参数digit为要保留的小数点位数
public static double Round (double value, int digit)
{
        double vt = Math.Pow (10, digit);
        //1.乘以倍数 + 0.5
        double vx = value * vt + 0.5;
        //2.向下取整
        double temp = Math.Floor (vx);
        //3.再除以倍数
        return (temp / vt);
}

2. 下面介绍一下四舍六入五成双

如下面的例子,就是用“四舍六入五成双”得到的结果:

        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

细心的人会发现Math.Round还有第三个枚举参数.
注意:该参数仅对当第三个参数是其他数字的中间值时(或者说数字的右侧最后一位数是5时),才会起作用。
http://s1/mw690/0028zgIhgy6EwcrzGBWf0&690C#四舍五入(绝对好使)" TITLE="Unity之路(十三)- C#四舍五入(绝对好使)" />
double d5 = Math.Round(2.5, 0, MidpointRounding.AwayFromZero);
解释:当一个数字(2.5),是其他两个数字(2和3)的中间值时,会将其摄入为两个值中绝对值较小的值2.
double d5 = Math.Round(-2.5, 0, MidpointRounding.AwayFromZero);
解释:当一个数字(-2.5),是其他两个数字(-2和-3)的中间值时,会将其摄入为两个值中绝对值较小的值-2.

double d6 = Math.Round(2.5, 0, MidpointRounding.ToEven);
解释:当一个数字(2.5),是其他两个数字(2和3)的中间值时,会将其摄入为最接近的偶数2.
double d6 = Math.Round(-2.5, 0, MidpointRounding.ToEven);
解释:当一个数字(-2.5),是其他两个数字(-2和-3)的中间值时,会将其摄入为最接近的偶数-2.

3. 向上取整
Ceiling直接往大的取,比如 System.Math.Ceiling(-123.55)=-123, System.Math.Ceiling(123.55)=124

4. 向下取整
Floor直接往小的取,比如 System.Math.Floor(-123.55)=-124,System.Math.Floor(123.55)=123

5.直接截取
Truncate直接切下整数,比如 System.Math.Truncate(-123.55)=-123, System.Math.Truncate(123.55)=123


关于此枚举,详细你也可以查看官方文档:

MidpointRounding 枚举









0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有