データは実際には文字列として保存されません"£1000.00"
。何らかの数値形式で保存されます。
サイドバー:通常、データベースは、 10 進データ型 (一部の DB ではmoneyとも呼ばれます) または浮動小数点数 ( doubleとも呼ばれます)のいずれかを使用して金額を格納するように設定されています。
違いは、10 進数で格納すると 0.01 のような特定の数値が正確に表現されるのに対し、2 倍ではこれらの数値はおおよそしか格納できないため、丸め誤差が発生することです。
何かが表示用にフォーマットしているため、データベースは数値を保存しているように見えます。"£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")
コントロール パネルがヨーロッパ形式に設定されているシステムでは、数字の 1 と 2 が生成されます。
問題は、「.」を使用するように設定された地域コントロール パネルを使用してコンピュータに座っている人がいる可能性があります。小数点記号として使用されていますが、小数点記号として「,」と入力しています。