Страница: 1 |
Страница: 1 |
Вопрос: VAL работает как INT, что можно сделать?
Добавлено: 17.01.08 16:11
Автор вопроса: 1959
Подскажите пож., может кто встречался.
2 машины, на обоих ХР и VB6
На одной команда VAL("25.62") работает нормально (выдает число 25.62), на другой при выполнении оставляет только целую часть: VAL("25.62") = 25
Какие настройки ПЭВМ играют здель роль?
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #1
Добавлено: 17.01.08 16:30
Региональные настройки, разделитель.
Номер ответа: 2
Автор ответа:
1959
Вопросов: 2
Ответов: 5
Профиль | | #2
Добавлено: 17.01.08 16:40
Первое, что в голову пришло.
Сравнивал. Посмотрю еще раз.
Кстати, такой же баг и в VBA
Номер ответа: 3
Автор ответа:
Satanist
ICQ: 4732902
Вопросов: 7
Ответов: 26
Профиль | | #3
Добавлено: 18.01.08 09:17
Ммм не, это не региональные настройки
Номер ответа: 4
Автор ответа:
1959
Вопросов: 2
Ответов: 5
Профиль | | #4
Добавлено: 18.01.08 09:37
Да, региональные. Спасибо, нашел.
При разделителе целой и дробной части - ЗАПЯТАЯ -VAL работает как INT. Ставишь точку - нормально.
Номер ответа: 5
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #5
Добавлено: 18.01.08 20:27
Да, но если в настройках разделитель - запятая, то всё будет наоборот. С точкой не будет работать. Логично?
Номер ответа: 6
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #6
Добавлено: 18.01.08 20:30
Очень просто определить разделитель, установленный в системе.
Номер ответа: 7
Автор ответа:
Champion
ICQ: 461506481
Вопросов: 38
Ответов: 88
Web-сайт:
Профиль | | #7
Добавлено: 24.01.08 14:41
лениво было копаться в настройках
а данные могли быть в каком угодно виде:
и с точкой, и с запятой, и со значком валюты
написал маленькую функцию
Dim spar() As String, oy$: oy = txtW.Text: oy = Trim$(Replace(oy, "$", "")
If InStr(oy, "." Then
spar = Split(oy, ".", , vbTextCompare)
ElseIf InStr(oy, "," Then
spar = Split(oy, ",", , vbTextCompare)
ElseIf oy = "" Then
oy = " ": spar = Split(oy, "", , vbTextCompare)
Else
spar = Split(oy, "!", , vbTextCompare)
End If
If UBound(spar) = 1 Then
Select Case Len(spar(1))
Case 1: GetValue = Val(spar(0)) + Val(spar(1)) / 10
Case 2: GetValue = Val(spar(0)) + Val(spar(1)) / 100
Case Else
End Select
Else
GetValue = Val(spar(0))
End If
может и не гламурно, но работает так, как мне нужно)