CSng()???

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

CSng()???

Сообщение duce » 22.12.2003 (Пн) 18:06

Уважаемые знатоки! Против вас играет функция CSng...или
скорее мой малый опыт и знание :)
Вопрос в следующем: при передаче ей строки вида
"56,9067" она совершенно запросто просто выкидывает ","
и возвращает 569067 :shock: Ни брани, ни exception...
нет, ну пусть хоть ругнется, но так же нельзя -
делать из одного числа другое. То ли она решает, что это
сепаратор триад...
Как штатно обработать
ситуацию с несоответствием сепаратора в тексте и в сеттингах
машины?
Благодарен за снисходительное вразумление!

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

Сообщение alibek » 22.12.2003 (Пн) 18:50

А почему бы не использовать Val()? Для нее формат числа всегда фиксированный -- нет ведущих нолей, нет разделителя групп и разделитель целой и дробной части точка (.)
Lasciate ogni speranza, voi ch'entrate.

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

Re: CSng()???

Сообщение skiperski » 22.12.2003 (Пн) 18:59

duce писал(а):То ли она решает, что это сепаратор триад...

Именно так она и думает.

duce писал(а):...нет, ну пусть хоть ругнется, но так же нельзя -

А чего ей ругаться, если в настройках ясно указано считать запятую разделителем групп? Или меняй настройки или используй при наборе чисел правильные разделители.

duce писал(а):Как штатно обработать ситуацию с несоответствием сепаратора в тексте и в сеттингах машины?

Если борьба только с запятой, строящей из себя десятичный разделитель, то заменяй её на точку и используй для преобразования функцию Val().

Код: Выделить всё
Val(Replace(n, ",", "."))


Если же в тексте есть разделители групп или различные форматы, то дело почти безнадёжно.

-=alp=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 147
Зарегистрирован: 08.03.2003 (Сб) 19:20

Сообщение -=alp=- » 23.12.2003 (Вт) 20:42

не знаю какой ты VB используешь у меня шестой и всё работает ничего не выкидывает

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 24.12.2003 (Ср) 11:17

А ты запятую на точку смени и всё он заCSng'ает.. :)


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 5

    TopList