Тема: Разделитель целой и дробной частей числа
Подскажите пожалуйста, как определить(программно)разделитель целой и дробной частей числа. Заранее благодарен.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Разделитель целой и дробной частей числа
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Подскажите пожалуйста, как определить(программно)разделитель целой и дробной частей числа. Заранее благодарен.
Простейший срособ
if isnumeric("1.2") then
' . разделитель
else
' , разделитель
endif
(просто проверить число в одной из 2 записей)
Уважаемый dvim, спасибо за помощь.
Способ предложенный dvim (2004-08-10 14:17:40) сработает далеко-о-о не всегда. Все зависит от конкретных настроек Windows. Isnumeric может возвращать True как для "1.2", так и для "1,2". Корректно определять, какой используется разделитель целой и дробной части числа, надо через WinAPI.
Private Const LOCALE_SDECIMAL = &HE Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long Public Function GetDecimalSep() As Boolean Dim strVal As String strVal = String(16, Chr(0)) GetLocaleInfo GetUserDefaultLCID(), LOCALE_SDECIMAL, strVal, 16 If Left(strVal, InStr(1, strVal, Chr(0)) - 1) = "." Then GetDecimalSep = True Else GetDecimalSep = False End If End Function
Уважаемый bender, спасибо за помощь. Это именно то, что нужно
seprator=mid(format (1.1,"General Number"),2,1))
Это проще и должно всегда работать.
Пользуюсь случаем - Bender'у спасибо за участие в этом форуме. Получила несколько раз неоценимую помощь!
Sub sep() Dim a As Double Dim b As Long Dim c As Double Dim seprator As String a = 12349.4321 seprator = Mid(Format(1.1, "General Number"), 2, 1) b = CLng(Format(Format(a, seprator))) c = a - b End Sub
А теперь с трех раз угадайте что будет в "с"
ТА-ДААА
c=0.432099999999991
:))
sorry
b = CLng(Format(a, seprator))
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Разделитель целой и дробной частей числа
Форум работает на PunBB, при поддержке Informer Technologies, Inc