1. 程式人生 > >C#中Math.Round() 的真實含義

C#中Math.Round() 的真實含義

gpo www 使用 () 規範 net ref 四舍六入 scrip

今天踩了一個坑
Math.Round()函數取四舍五入發現不對,3/2 = 2, 5/2 = 2
網上搜了一下:http://www.cnblogs.com/fanyong/archive/2013/05/30/chinese_round.html

C#中的Math.Round()並不是使用的"四舍五入"法。其實在VB、VBScript、C#、J#、T-SQL中Round函數都是采用Banker‘s rounding(銀行家算法),即:四舍六入五取偶。事實上這也是IEEE的規範,因此所有符合IEEE標準的語言都應該采用這樣的算法。

.NET 2.0 開始,Math.Round 方法提供了一個枚舉選項 MidpointRounding.AwayFromZero 可以用來實現傳統意義上的"四舍五入"。即: Math.Round(4.5, MidpointRounding.AwayFromZero) = 5。

C#中Math.Round() 的真實含義