Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: winandfx.narod.ru
 Профиль | | #5
Добавлено: 18.01.08 20:27
Да, но если в настройках разделитель - запятая, то всё будет наоборот. С точкой не будет работать. Логично?

Ответить

Номер ответа: 6
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #6
Добавлено: 18.01.08 20:30
Очень просто определить разделитель, установленный в системе.

Ответить

Номер ответа: 7
Автор ответа:
 Champion



ICQ: 461506481 

Вопросов: 38
Ответов: 88
 Web-сайт: afhelp.in.ua
 Профиль | | #7
Добавлено: 24.01.08 14:41
лениво было копаться в настройках
а данные могли быть в каком угодно виде:
и с точкой, и с запятой, и со значком валюты

написал маленькую функцию
Function GetValue(txtW As TextBox) As Double
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


может и не гламурно, но работает так, как мне нужно)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам