Округление числа до 50

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
AndrewMarcovich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 05.03.2005 (Сб) 10:29

Округление числа до 50

Сообщение AndrewMarcovich » 21.09.2005 (Ср) 8:12

Необходимо округлять дробные числа в большую сторону до 50. Типа 300,350,750 и т.д. Подумал сначала round'om а потом по 1 в цикле прибавлять,но как потом определить,что на 50 нацело делится?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.09.2005 (Ср) 8:25

Round(...,-1)
Lasciate ogni speranza, voi ch'entrate.

AndrewMarcovich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 05.03.2005 (Сб) 10:29

Сообщение AndrewMarcovich » 21.09.2005 (Ср) 8:37

invalid procedure call or argument при round(380,-1):((Какие ещё могут быть варианты?!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.09.2005 (Ср) 8:56

Fix(/100)*100
Lasciate ogni speranza, voi ch'entrate.

AndrewMarcovich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 05.03.2005 (Сб) 10:29

Сообщение AndrewMarcovich » 21.09.2005 (Ср) 9:41

Сделал round(380/50,0)*50!Теперь работает!!!:)

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 21.09.2005 (Ср) 10:48

(380 \ 50) * 50

можно и без round

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 21.09.2005 (Ср) 10:58

Нельзя

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 21.09.2005 (Ср) 11:09

почему нельзя?

380\50 - получаем целое число, в данном случае 7
умножаем его на 50 - получаем целое число кратное 50.

Ну и куда здесь round вставить? а главное зачем?
Весь мир матрица, а мы в нем потоки байтов!

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Re: Округление числа до 50

Сообщение Ennor » 21.09.2005 (Ср) 11:15

AndrewMarcovich писал(а):Необходимо округлять дробные числа в большую сторону до 50.

Исходя из этого, я бы сделал так:
Код: Выделить всё
Y = ((X + 50) \ 50) * 50

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 21.09.2005 (Ср) 11:19

Ennor, респект!
Опередил меня :lol:

AndrewMarcovich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 05.03.2005 (Сб) 10:29

Сообщение AndrewMarcovich » 21.09.2005 (Ср) 11:25

Всем большое спасибо:)

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 21.09.2005 (Ср) 11:28

останется только дождаться числа уже кратного 50 и получить в результате число на 50 большее исходного!
Весь мир матрица, а мы в нем потоки байтов!

Zer
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 460
Зарегистрирован: 26.09.2003 (Пт) 13:08
Откуда: Нижний Новгород

Сообщение Zer » 21.09.2005 (Ср) 11:31

2Ennor:
Y = ((X + 50) \ 50) * 50

При x=350 имеем:
(350+50)\50=8
8*500=400
А должно быть 350 !!![/b]
Microsoft DirectX - Маломягкий Прямой Х...
Не откладывай на завтра то, что можно выпить сегодня...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 21.09.2005 (Ср) 11:31

Вариант без ненужного увеличения:
Код: Выделить всё
If (X Mod 50) = 0 Then
Y = X
Else
Y = ((X + 50)\50)*50
End If


почему то кажется что можно проще
Весь мир матрица, а мы в нем потоки байтов!

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 21.09.2005 (Ср) 11:43

Код: Выделить всё
Function LngRound(ByVal x As Long, Optional ByVal iMod As Long = 1) As Long
    LngRound = ((x + iMod \ 2) \ iMod) * iMod
End Function

Immediate window
Код: Выделить всё
n=75:?n,LngRound(n,50)
75            100
74            50
50            50
25            50
24            0
1             0
0             0

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 21.09.2005 (Ср) 12:19

(X \ 50)*50 + SGN(X - (X \ 50)*50)*50

Вроде должно работать ;)
То, что для одних константа, для других только переменная...

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 21.09.2005 (Ср) 12:55

skiperski, I'm with you! :)
Быть... или не быть. Вот. В чём вопрос?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 92

    TopList