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


 
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時),才會起作用。
Unity之路(十三)- <wbr>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 枚舉

 

Math.Round 方法

http://msdn.microsoft.com/zh-cn/library/system.math.round(v=vs.110).aspx

 

http://blog.sina.com.cn/s/blog_74c22b210101dau8.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM