точка или запятая

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

точка или запятая

Сообщение MVG » 03.06.2004 (Чт) 16:47

Работа над калькулятором.

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


Dim z As Double
____________________________________
'нажимаем клавишу "+"

txtText1.Tag = txtText1.Text

____________________________________
'нажимаем клавишу "="

z = Val(txtText1.Tag) + Val(txtText1.Text)
txtText1.Text = z

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 03.06.2004 (Чт) 16:48

То, что она выводит на экран зависит от региональных установок твоего компа.

MVG
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 28.04.2004 (Ср) 15:07
Откуда: Одесса

Сообщение MVG » 03.06.2004 (Чт) 16:53

Но я же ввожу точку с дополнительной (цифровой) клавиатуры, программа же воспринимает ее как математический знак, а с тем что она сама выводит она работать не хочет

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 03.06.2004 (Чт) 18:47

Все правильно, в MS VB вшита интерпретация обычного американского формата даты, времени и чисел:

Дата: ММ/ДД/ГГ
Время: ЧЧ:ММ:СС
Разделитель разрядов: точка


Думаю, здесь помогут функции CInt, CLng, CSng или CDbl (в зависимости от типа выражения - Integer, Long, Single или Double), вместо обычной Val. Они учитывают региональные настройки при конвертации. Подробнее см. справку VB.

Посмотри сюда:
Код: Выделить всё
'результат 155
MsgBox Val("155,9")
'результат 156
MsgBox CInt("155,9")
Моду создают модоки, а распространяют модозвоны.

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 06.06.2004 (Вс) 19:59

hCORe на счет настроек ты прав, но мне кажется Val в твоем примере не подходит, т.к., если я правильно понимаю, то эта ф-я работает так:
Код: Выделить всё
f = "125,5"
For i = 1 To Len(f)
  Select Case Mid(f, i, 1)
    Case IsNumeric(True), ".", " "
    Valll = Valll & Mid(f, i, 1)
  Case Else
  Exit For
End Select
Next
Msgbox Valll   ' 125
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

ASD
Модератор
Модератор
Аватара пользователя
 
Сообщения: 1758
Зарегистрирован: 07.12.2001 (Пт) 21:08
Откуда: Russia

Сообщение ASD » 11.06.2004 (Пт) 11:33

Calvin писал(а):hCORe на счет настроек ты прав, но мне кажется Val в твоем примере не подходит,


Думаю, здесь помогут функции CInt, CLng, CSng или CDbl (в зависимости от типа выражения - Integer, Long, Single или Double), вместо обычной Val.
Moderator VBStreets
---------------------------

MVG
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 28.04.2004 (Ср) 15:07
Откуда: Одесса

Сообщение MVG » 15.06.2004 (Вт) 14:40

З-А-Р-Р-Р-А-Б-О-Т-А-Л-О !!!

Проблема, хотя и связана с национальными настройками, но сидит немного глубже. Оказывается, ТО что VB выводит и ТО что он имеет ввиду не всегда одно и то же. VB при внутренних расчётах, таки да, использует десятичную точку ".", а нам с вами для нашего же удобства :D выводит десятичную запятую "," с которой дальнейшие действия невозможны. Проблема была в том, чтобы докопаться что VB говорит и думает поразному. Чтобы решить данную задачу надо все результаты расчётов скидывать в переменные параллельно с тем, что выводится в текстовое поле и в дальнейшем использовать данные из этих переменных, а не из txt полей.

------ЭЛЕМЕНТАРНО------- :lol:


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

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

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

    TopList