Есть ли функция IsDouble() в VB6? Если я не ошибаюсь, тип данных Double в VB6 эквивалентен float в SQL Server 2000. Буду очень признателен за ваш совет.
IsDouble() в VB6?
Ответы (5)
На самом деле вам гораздо лучше использовать функцию Vartype.
Private Function IsDouble(ByVal value As Variant) As Boolean
IsDouble = (VarType(value) = vbDouble)
End Function
IsNumeric() в порядке, он будет принимать только значения, которые подходят для Doubles. Он зависит от региона, то есть для французских региональных настроек десятичным разделителем является запятая.
Я только что попробовал это в окне Immediate.
Debug.Print IsNumeric("4e308")
False
Определение VB6 Double в руководстве: «Переменные VB6 Double хранятся как 64-битные (8-байтовые) числа с плавающей запятой IEEE со значениями от -1,79769313486232E308 до -4,94065645841247E-324 для отрицательных значений и от 4,94065645841247E. от -324 до 1,79769313486232E308 для положительных значений".
Я думаю, что это то же самое, что и SQL Server с плавающей запятой, исходя из онлайн-документов а>. «Числовые данные с плавающей точностью со следующими допустимыми значениями: от -1,79E + 308 до -2,23E - 308, 0 и 2,23E + 308 до 1,79E + 308».
В VB6 нет встроенной функции IsDouble, вместо этого вы можете использовать встроенную функцию 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
Есть функция IsNumeric(), которая должна работать достаточно хорошо. Если этого недостаточно для ваших нужд, можете ли вы также объяснить, каким образом?