1 Math.Round(45.367,2) //Returns 45.37 2 Math.Round(45.365,2) //Returns 45.36
C#中的Round()不是我們中國人理解的四舍五入,是老外的四舍五入,是符合IEEE標准的四舍五入,具體是四舍六入,下面的才是符合中國人理解的四舍五入
1 Math.Round(45.367,2,MidpointRounding.AwayFromZero); //Returns 45.37 2 Math.Round(45.365,2,MidpointRounding.AwayFromZero); //Returns 45.37
備注:根據網友在留言板反饋,傳入的參數如果是double類型的,其實得到的結果還是不會四舍五入(double精度不夠導致的)
所以上面的更嚴謹的寫法應該是:將傳入的參數默認轉換為decimal類型,確保其在四舍五入之前精度不會降下來。因為decimal精度高於double
最終版:
1 Math.Round(Convert.ToDecimal(45.367),2,MidpointRounding.AwayFromZero); //Returns 45.37 2 Math.Round(Convert.ToDecimal(45.365),2,MidpointRounding.AwayFromZero); //Returns 45.37