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
