Есть ли какая-нибудь функция IsDouble() в VB6? Если я не ошибаюсь, двойной тип данных в VB6 эквивалентен float в SQL Server 2000. Ваш совет будет очень признателен.IsDouble() в VB6?
ответ
Function IsDouble(ByVal varValue As Variant) As Boolean
Dim dblTest As Double
On Error Resume Next
dblTest = CDbl(varValue)
IsDouble = Err.Number = 0
End Function
Функция IsNumeric()
, которая должна работать достаточно хорошо. Если это не соответствует вашим потребностям, вы также можете объяснить, каким образом?
Позволь мне раскрыть фон, мне нужно проверить значение строки, которая приходит из текстового файла, чтобы вставить в поле (SQL поплавкового типа данных) таблицы базы данных (SQL Server 2000). –
Хорошо. Единственная проблема с IsNumeric заключается в том, что она позволит переполнение: число, которое слишком велико, чтобы вписаться в тип float. –
Неправильно, он будет принимать только значения, которые вписываются в Double. (Стандарт IEEE 8-байтовый номер с плавающей запятой) – MarkJ
IsNumeric() в порядке, он будет принимать только значения, которые вписываются в парные разряды. Это регионально известно, т. Е. Для французских региональных настроек десятичный разделитель является запятой.
Я просто попробовал это в окне Immediate.
Debug.Print IsNumeric("4e308")
False
Определение VB6 двойной в руководстве «VB6 Двойные переменные хранятся в IEEE 64-бит (8 байт) числа с плавающей точкой в диапазоне от значения в -1.79769313486232E308 до -4.94065645841247E-324 для отрицательных значений и от 4.94065645841247E-324 до 1.79769313486232E308 для положительных значений ".
Я думаю, что это то же самое, что и плагин SQL Server, проходящий онлайн docs. «Число данных с плавающей точностью чисел со следующими допустимыми значениями: -1.79E + 308 - -2.23E - 308, 0 и 2.23E + 308 - 1.79E + 308."
На самом деле вам намного лучше использовать функцию Vartype.
Private Function IsDouble(ByVal value As Variant) As Boolean
IsDouble = (VarType(value) = vbDouble)
End Function
Существует нет встроенного IsDouble функции доступна в VB6 вместо этого вы можете использовать встроенную IsNumeric функции. В противном случае вы можете использовать следующие пользовательские функции для достижения того же:
Function IsDouble(ByVal value As Variant) As Boolean
Dim convertedValue As Double
On Error Goto EH
convertedValue = CDbl(value)
IsDouble = True
Exit Function
EH:
IsDouble = False
End Function
Спасибо за ваши коды. Позвольте мне открыть фон, мне нужно проверить строковое значение, которое поступает из текстового файла, чтобы вставить в поле (тип данных с плавающей точкой SQL) таблицы базы данных (SQL Server 2000). –
Будьте осторожны, что CDbl примет как входной сигнал. Я думаю, что он принимает следы бессмысленных персонажей. –
Nevermind, я думал о функции Вала. Но если у вас есть международные пользователи, вы можете протестировать это и против них. Я думаю, что CDBl использует региональные настройки для преобразования. –