Visual Studio 2015 net 4.6.1 四捨六入五成雙 錯誤
最近再試,發現 Math.round() 又正確了….奇了! 116.55出來是116
==========
一般的說法是Math.round()
但實際上跑
decimal num = 116.55
Math.round(num)
結果是 117 這是錯的!!
所以
改成
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