Странно...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
v@Mp!rO
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 17.01.2004 (Сб) 17:45

Странно...

Сообщение v@Mp!rO » 02.03.2004 (Вт) 20:24

Код: Выделить всё
Dim x1,x4 as Long
'Dim x2,x3 as Long

x1 = -18 / 12
x2 = -18 / 12
x3 = Int(x2)
x4 = -18 \ 12


Результат:
x1 = x3 = -2
x2 = -1,5
x4 = -1

Мне надо чтобы x1 = x2!

Это како-то глюк: если x объявлен то ответ округляется, а если нет то нет!!!

Что делать??? Ведь это некрасиво оставлять переменные необъявленными.

acoustic
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 09.12.2003 (Вт) 17:30

Сообщение acoustic » 02.03.2004 (Вт) 20:47

Патамучта, дарагой, разберитесь сначала с типами данных в васике. Это не глюк - это тип variant который кушая немало памяти принимает тот вид, который васик считает оптимальным.

Все не объявленные явно переменные создаются с типом variant.

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 03.03.2004 (Ср) 1:20

Незнаю, а у меня хоть объявленная хоть не объявленая переменная, всё-равно получается x1=x2=-1.5
Может у тебя с глазами плохо :lol:
Нет ничего невозможного для человека с интеллектом.

webgrs
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 19.02.2004 (Чт) 1:39

Сообщение webgrs » 03.03.2004 (Ср) 2:09

у меня vb net

Код: Выделить всё
Dim x1,x4 as Long
Dim x2,x3 as Long

x1 = -18 / 12
x2 = -18 / 12
x3 = Int(x2)
x4 = -18 \ 12


так и не понял в чем проблема..
результат
x1=x2=x3=2
x4=1

Ilya Vasilyev
Постоялец
Постоялец
 
Сообщения: 820
Зарегистрирован: 06.08.2002 (Вт) 5:36
Откуда: Russia, Omsk

Сообщение Ilya Vasilyev » 03.03.2004 (Ср) 6:06

:arrow: v@Mp!rO
Это частое заблуждение... в басиках до 7 версии каждую переменную надо объявлять отдельно
Код: Выделить всё
Dim x1 as long
Dim x4 as long

А в твоем случае x4 действительно типа Long, а вот x1 типа variant со всеми вытекающими

:arrow: webgrs
А вот как раз в VB7 (net) это дозволено... надо было 6 версий басика делать, чтобы до этого дойти :cry:
Изображение
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали

v@Mp!rO
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 17.01.2004 (Сб) 17:45

Сообщение v@Mp!rO » 03.03.2004 (Ср) 21:33

Объясню поточнее. У меня 6 вб. Кагда переменная не объявлена совсем то при делении всё нормально. А когда она объявлена как лонг или (например) интегер то при делении результат иногда округляется (не всегда!!!).

А в твоем случае x4 действительно типа Long, а вот x1 типа variant со всеми вытекающими

Так я написал только в примере (в проге есть только x1 типа лонг)

так и не понял в чем проблема..
результат
x1=x2=x3=2
x4=1

В том и прблема :evil:
На калькуляторе посчитай -18 / 12 = -1,5!!!

Может у тебя с глазами плохо

С глазами у меня всё в порядке!!! :wink: по-моему :D

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 04.03.2004 (Чт) 1:29

Короче, Long - это целый тип, и в нём нельзя хранить дробные значения (поэтому VB и округляет значение), а в Variant'е можно хранить что угодно.
Нет ничего невозможного для человека с интеллектом.

v@Mp!rO
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 17.01.2004 (Сб) 17:45

Сообщение v@Mp!rO » 04.03.2004 (Чт) 14:59

Тема закрыта.
Буду объявлять как Double.
Всем огромное спасибо :D


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

    TopList