Округление числа: если число ближе к 100, округление до ближайшего 250, иначе округление до ближайшего 250 - PullRequest
0 голосов
/ 29 января 2019

Я делаю код округления для целого числа.Он уже работает, чтобы округлить до ближайшего 250.

Math.round(FormatNumber(CType(txt_input.Text, Decimal), 0) / 250) * 250

Однако это не то, что мне нужно.Вместо этого мне нужно округлить вверх / вниз соответственно:
Если число меньше 100, мне нужно округлить до ближайшего 250, иначе округлить до ближайшего 250.

Пример:

17541 = 17500 
2101  = 2250
7499  = 7500
7099  = 7000 

Как заставить приложение использовать Math.Floor() или Math.Ceiling() соответственно?

1 Ответ

0 голосов
/ 29 января 2019

Вы можете проверить, является ли N Mod 250 < 100.
Если это так, вычтите остаток, иначе добавьте 250 минус остаток:

Dim n1 As Integer = 17541
Dim roundToValue As Integer = 250

Dim n1Remainder As Integer = n1 Mod roundToValue
Dim n2 As Integer = If(n1Remainder < 100, n1 - n1Remainder, n1 - n1Remainder + roundToValue)
'Or
'Dim n2 As Integer = (n1 - n1Remainder) + If(n1Remainder < 100, 0, roundToValue)

2101  -> 2250
7499  -> 7500
17541 -> 17500
...