Округление числа так, чтобы оно делилось на 5

Я хочу округлить число (десятичное), чтобы оно делилось на 5.

Например, у меня есть несколько чисел и числа после округления:

Number        Rounded
0.4           5
3.4           5
7.3           10

Я могу использовать ceil для преобразования этого double в int и использовать цикл while, чтобы получить их до следующего кратного 5, но мне было интересно, есть ли какой-нибудь умный способ выполнить это.

Спасибо.

Ответ 1

Вы можете сначала разделить на 5, а затем использовать Math.Ceiling для округления значения. Впоследствии u может снова умножить на 5.

int rounded = (int) Math.Ceiling(Number / 5) * 5

Ответ 2

Если вы хотите

 f[6]  =  10
 f[-1] =  0  
 f[-6] = -5

Ответ Sören в порядке.

Если вы хотите:

 f[6]  =  10
 f[-1] =  -5 
 f[-6] = -10  

вы можете сделать что-то вроде:

f[x_] := Sign[x] Ceiling[Abs[x]/5] * 5  

С#:

var rounded = (int) Math.Sign(x) * Math.Ceiling(Math.Abs(x)/5) * 5;

Ответ 3

Как насчет:

5 * decimal.Ceiling(num / 5)