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 方法,而且解决它的唯一方法是将十进制符号设置为“。”但我不能只是改变人们的区域设置,因为我可能会搞砸其他希腊语他们正在使用的软件。

请人们帮助我..我对计算机上的希腊语失去了理智。我真的很感激和感谢任何可以帮助我解决这个问题的人

(我将我的区域设置设置为希腊语)插入语句我将 0.25 作为 sale_price 和 5.26 作为 kwh 导入。我正在使用断点,我看到变量的值是 0.25 和 1.2 使用 InvariantInfo。当它们存储在数据库中时,它们存储为 0 和 5。当我在区域设置中设置小数运算符“。”而不是“,”时,我导入 0.25 和 5.65,它们被正确存储。当我将区域设置设置为 English Us 并插入 0.25 和 5.65 时,它们已正确存储

4

2 回答 2

0

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

于 2012-06-12T04:45:38.520 回答
0

如果您想避免在代码中更改每个 ToDecimal() 或 decimal.Parse() 等函数的麻烦,请尝试在应用程序的最开始执行以下代码,然后再加载任何表单。

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