public static double RoundUp(double input, int num) { double tmpNum = Math.Floor(input); if ((input - tmpNum) > 0) //判斷input是否為整數 { if ((input - Math.Round(input, num)) != 0) //判斷所要取的位數是否存在 { //利用四捨五入的方法判斷是否要進位,若取的下一位數大於等於5則不用進位 if (Convert.ToInt32(input * Math.Pow(10, num + 1) % 10) < 5) { return Math.Round(input, num, MidpointRounding.AwayFromZero) + Math.Pow(0.1, num); } else { return Math.Round(input, num, MidpointRounding.AwayFromZero); } } else { return input; } } else { return input; } }
說明:
方法接收的參數第一個是要處理的浮點數,第二個是要取到小數點以下哪個位數並無條件進位。
如果輸入的參數為整數或要取的位數大於輸入的參數則回傳input
Example:
RoundUp(12.432, 2) = 12.44
RoundUp(13.5648, 3) = 13.565