Val и округление

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

Val и округление

Сообщение Aerus » 07.11.2007 (Ср) 16:53

Есть 2 значения
Код: Выделить всё
i=2.66
m=3
k = (Val(i)+Val(m))/2


Ответ будет 3

Я так понял, что val еще и округляет значение.
Подскажите пожалуйста, каким образом можно оставить 2 знака после запятой ?

Я читал тему по-округлению вот здесь: http://bbs.vbstreets.ru/viewtopic.php?p=6619747#6619670
Проблема в том, что с Mid(переменная, 1, InStr(переменная, ",") + 2) у меня ячейка просто пустой становиться..

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 07.11.2007 (Ср) 17:06

Код: Выделить всё
Dim i As Single
i = Val("2.66")

Будет 2.66

Для округления есть функция Round(число, количество знаков после запятой)
А если тебе надо не округлить, а отбросить лишние цифры, то так:
Код: Выделить всё
strN = "2,35987"
j = CSng(Mid$(strN, 1, InStr(1, strN, ",") + 2))
Последний раз редактировалось burik 07.11.2007 (Ср) 17:13, всего редактировалось 1 раз.
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

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

Сообщение alibek » 07.11.2007 (Ср) 17:06

Декларируй переменные с указанием типа и будет тебе щастье.
Lasciate ogni speranza, voi ch'entrate.

Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Сообщение Aerus » 07.11.2007 (Ср) 17:18

burik писал(а):
Код: Выделить всё
Dim i As Single
i = Val("2.66")

Будет 2.66

Для округления есть функция Round(число, количество знаков после запятой)
А если тебе надо не округлить, а отбросить лишние цифры, то так:
Код: Выделить всё
strN = "2,35987"
j = CSng(Mid$(strN, 1, InStr(1, strN, ",") + 2))

Спасибо, но ты написал Val("2.66"), а мне нужно чтобы она данные с переменной брало, там не статистическое значение.

alibek писал(а):Декларируй переменные с указанием типа и будет тебе щастье.

А можно пример ? Или это в смысле Dim lala As Integer?

Belkin
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 63
Зарегистрирован: 02.11.2007 (Пт) 18:02
Откуда: Рязань

Сообщение Belkin » 07.11.2007 (Ср) 17:34

Aerus
Все зависит от настроек "Язык и региональные настройки" в панели управлени. Если там у тебя запятая, i=2.75 будет выведено как 2
Но если в настройках точка, то будет 2.75
Андрей.

Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Сообщение Aerus » 07.11.2007 (Ср) 17:50

Belkin
Спасибо огромное! Теперь все как нужно работает.

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

Сообщение Viper » 08.11.2007 (Чт) 8:14

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

Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Сообщение Aerus » 10.11.2007 (Сб) 16:18

Viper
Спасибо, узнал много нового.


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

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

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

    TopList