EExcel 丞燕快速查詢2

EExcel 丞燕快速查詢2
EExcel 丞燕快速查詢2 https://sandk.ffbizs.com/

Visual Studio 2015 net 4.6.1 四捨六入五成雙 錯誤

最近再試,發現 Math.round() 又正確了....奇了! 116.55出來是116

==========
一般的說法是Math.round()

但實際上跑

decimal num = 116.55
Math.round(num)

結果是 117  這是錯的!!


所以

參考這個
https://windperson.wordpress.com/2013/02/21/c-%E5%B0%87%E5%B0%8F%E6%95%B8%E9%BB%9E%E5%BE%8C%E6%8C%87%E5%AE%9A%E4%BD%8D%E6%95%B8%E7%9A%84%E6%95%B8%E5%80%BC%E5%8E%BB%E6%8E%89%E7%9A%84%E6%96%B9%E6%B3%95/


改成

decimal GetFrag1(decimal input,int digit) //這個四捨六入五成雙才正確
{
            if (digit < 0) { return Math.Floor(input); }
            double pow = Math.Pow(10, digit);
            decimal sign = input >= 0 ? 1 : -1;
            return sign * Math.Floor(sign * input * (decimal)pow) / (decimal)pow;
}


GetFrag1(num, 0).ToString()

結果 116