Данные на самом деле не хранятся в виде строки "£1000.00"
; он хранится в каком-то числовом формате.
Боковая панель: Обычно базы данных настроены для хранения денежных сумм с использованием типа данных десятичный (также называемый money в некоторых БД) или как число с плавающей запятой (также называемое double ).
Разница в том, что когда он хранится как десятичное , определенные числа, такие как 0,01, представляются точно, тогда как в double эти числа могут храниться только приблизительно, вызывая ошибки округления.
База данных выглядит как для хранения числа как "£1000.00"
, потому что что-то форматирует его для отображения. В VB6 есть функция FormatCurrency
, которая принимает число, подобное 1000, и возвращает строку, подобную "£1000.00"
.
Вы заметите, что функция FormatCurrency
не принимает аргумент, определяющий тип используемой валюты. Это потому, что он, наряду со всеми другими специфичными для локали функциями в VB, вычисляет валюту из текущей локали системы (из панели управления Windows).
Это означает, что в моей системе
Debug.Print FormatCurrency(1000)
напечатает $1,000.00
, но если я запусту ту же самую программу на компьютере с Windows, настроенной на британский язык, он, вероятно, напечатает £1,000.00
, что, конечно, является чем-то совершенно другим.
Точно так же у вас где-то есть код, я не могу сказать, где, в Польше, кажется, он отвечает за анализ строки пользователя и ее преобразование в число. И если этот код находится в Visual Basic, опять же, он полагается на панель управления, чтобы решить, "." или "," - это разделитель тысяч и "," или "." является десятичной точкой.
Функция CDbl
преобразует свой аргумент в число. Так, например, на моей системе в США
Debug.Print CDbl("1.200")
производит номер один, точка два, в системе с панелью управления, настроенной на европейское форматирование, он производит число тысяча двести.
Возможно, проблема в том, что у вас кто-то сидит за компьютером с региональной панелью управления, настроенной на использование "." в качестве десятичного разделителя, но они вводят «,» в качестве десятичного разделителя.