Округление числа до деления на 5 - PullRequest
14 голосов
/ 02 февраля 2011

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

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

Number        Rounded
0.4           5
3.4           5
7.3           10

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

Спасибо.

Ответы [ 3 ]

37 голосов
/ 02 февраля 2011

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

int rounded = (int) Math.Ceiling(Number / 5) * 5
10 голосов
/ 02 февраля 2011

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

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

Сорен ответит в порядке.

Если вместо этого вы хотите:

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

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

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

C #:

var rounded = (int) Math.Sign(x) * Math.Ceiling(Math.Abs(x)/5) * 5;
6 голосов
/ 02 февраля 2011

Как насчет:

5 * decimal.Ceiling(num / 5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...