4

数字を受け入れるテキストボックスがあります。これらの番号はデータベースに保存されます。2,35 のような数値を入力し、浮動小数点数に変換してデータベースに送信すると、エラーが発生します。これは、データベースがドット付きの数値 (2.35 など) のみを受け入れるためです。

float num = float.Parse(textBox1.Text);

num はまだ 2,25 です

それを管理する方法は?試してみましCultureInfo.InvariantCultureたが、欲しいものが得られません

4

5 に答える 5

1

最も簡単な方法は、「,」を「.」に置き換えることです。のように:

float num = float.Parse(textBox1.Text);
string stringValue = num.ToString().Replace(',', '.');

次に、「stringValue」をデータベースに送信します。

お役に立てば幸いです。

于 2013-04-04T13:08:48.230 に答える
1

これはグローバル化に共通の問題です。定義する必要があるのは、データ自体を格納する単一のカルチャです。これは、データを文字列値として格納しているためです。次に、そのカルチャを使用してすべてのデータ入力と処理を行います。私たちのコードには、多文化の数学とデータ表示を処理するために、これに似たいくつかのブロックがあります。

//save current culture and set to english
CultureInfo current = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

//Do Math and Data things

//restore original culture
System.Threading.Thread.CurrentThread.CurrentCulture = current;

このようにして、データの生成または表示に使用されているカルチャに関係なく、すべてのデータが同じ方法で処理および保存されるようにすることができます。

編集

データを保存して数値を文字列に変換するには、まったく同じ方法で行います。現在のスレッドの CultureInfo 設定を "en-US" に設定している間.ToString()、すべての番号のメソッドは "." を使用します。小数点の「、」の代わりに。もう 1 つの方法は、.ToString() を呼び出すときにフォーマット プロバイダーを指定することです。

decimalNumber.ToString(new CultureInfo("en-US"));

これは、数値を文字列に変換するときに、提供されたカルチャの NumberFormat を使用することを指定します。

于 2013-04-08T18:49:32.050 に答える
1

これを使って:

CultureInfo.CreateSpecificCulture("en-US");

当時と同じ問題があり、上記のコードで解決しました

于 2013-04-04T13:15:36.057 に答える