0

次のコードがあります。

decimal kwh = decimal.Parse(textBox1.Text, 
                            NumberStyles.AllowDecimalPoint, 
                            NumberFormatInfo.CurrentInfo);

decimal sale_price = decimal.Parse(textBox2.Text, 
                                   NumberStyles.AllowDecimalPoint, 
                                   NumberFormatInfo.CurrentInfo); 

decimal totalamnt = sale_price * kwh;

私の問題は、地域設定がギリシャ語に設定されている場合、小数点以下の数字を受け入れないことです。「、」で入力すると

「 . 」で小数を入力しようとしInvariantInfoましたが、やはり受け入れられません。

面白いことに、コントロール パネル -> 地域と言語 -> 追加設定 に移動すると、小数点と千単位の演算子を設定できます。小数点記号を「.」に設定すると.......すべてが完全に機能します。

InvariantInfo を使用して「 . 」と入力するか、または CurrentInfo を使用して「 , 」と入力するか

それは私を夢中にさせています.Parseメソッドだけでなく、小数点記号を「.」に設定する唯一の方法だけでなく、多くの方法を試しましたが、他のギリシャ語を台無しにする可能性があるため、人々の地域設定を変更することはできません.彼らが使用しているソフトウェア。

人々が私を助けてください.. 私はコンピューター上のギリシャ語で頭がおかしくなっています。これを整理するのを手伝ってくれる人には本当に感謝しています

(私は地域設定をギリシャ語に設定しました)ステートメントを挿入します。ブレークポイントを使用していますが、InvariantInfo を使用すると、変数の値が 0.25 と 1.2 であることがわかります。それらがDBに保存されると、0と5として保存されます。地域設定で10進演算子を「 . 」ではなく「 」に設定すると、0.25と5.65がインポートされ、正しく保存されます。地域設定をEnglish Usに設定し、0.25と5.65を挿入すると、正しく保存されます

4

2 に答える 2

0

コード内のすべての ToDecimal() や decimal.Parse() などの関数を変更する手間を避けたい場合は、フォームをロードする前に、アプリケーションの最初で次のコードを実行してみてください。

Application.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
于 2012-06-12T11:33:18.750 に答える
0

string ammount = (textBox2.Text).Replace (",",".");

于 2012-06-12T04:45:38.520 に答える