Округление до ближайшего 5 до C # - PullRequest
0 голосов
/ 30 октября 2019

После перехода по нижеуказанным ссылкам:

Ссылка1 Ссылка2 Ссылка3 И этот список можно продолжить. Я не думаю, что полностью понимаю идею Math.Round.

Допустим, у меня есть следующие значения [73.59, 46.28] , теперь я хочу перейти к следующим 5.

После использования Math.Round(Value / 5) * 5 конечные результаты выглядят следующим образом:

73,59 => 70

46,28 => 45

Это работает для того, как Math.Round был предназначен для использования. Тем не менее, я работаю с валютой и хотел бы, чтобы она была следующей 5 вверх. Поэтому желаемый результат может быть следующим:

73.59 => 75

46.28 => 50

Я также пытался поиграть с MidpointRounding.AwayFromZero но я все равно не получаю желаемого результата. Может кто-нибудь объяснить или дать указания, как я могу выполнить эту задачу?

Заранее спасибо.

1 Ответ

3 голосов
/ 30 октября 2019

Чтобы всегда округлять, вы должны использовать Math.Ceiling вместо Math.Round:

static int RoundUpToMultipleOf5(decimal value) => (int)Math.Ceiling(value / 5) * 5
...