發表文章

目前顯示的是 12月, 2019的文章

[C#] 神奇的Math.Round 四捨五入方式

這四捨五入的特性真的蠻神奇的 而且需要了解 不然有些計算上會有細微的失誤 甚至在連續的計算上會出現問題 引用 https://dotblogs.com.tw/daniel/2018/01/31/153636 C# 中要四捨五入 第一個會想到 Math.Round Math.Round (128.5)  應該要等於 129 。 但結果是128 ?! 這是Math.Round的Bug嗎XD 讓我們一起看下去..... 查了MSDN才發現...  Math.Round MSDN Math.Round 四捨五入有兩種方式 MidpointRounding.AwayFromZero  遠離零四捨五入 中間值會四捨五入到下一個數字背離零。 比方說,3.75 捨入至 3.8 3.85 四捨五入為 3.9,-3.75 捨入至-3.8,和-3.85 會捨入為-3.9。 這種形式的捨入由 列舉型別成員。 遠離零四捨五入為最廣泛的已知的表單的捨入。 MidpointRounding.ToEven   捨入至最接近值或五成雙 中間值會四捨五入至最接近的偶數。 比方說,3.75 和 3.85 捨入 3.8,並捨入到-3.8-3.75 和-3.85。 這種形式的捨入由列舉型別成員。   預設使用: MidpointRounding.ToEven decimal m = 128.5 m; Console.WriteLine(Math.Round(m)); //128 Console.WriteLine(Math.Round(m, 0 , MidpointRounding.AwayFromZero)); //129 Math.Round(128.5) 使用預設: MidpointRounding.ToEven   四捨五入至最接近的偶數是128  結果就是128 Math.Round(128.5) 使用預設: MidpointRounding.AwayFromZero   四捨五入是129  結果就是129 小結: 所以真的要四捨五入...