解析希腊十进制数

时间:2012-04-21 08:09:09

标签: c# cultureinfo

我有以下代码:

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方法,而且获得arround的唯一方法就是将小数符号设置为“。”但是我不能绕过改变人们的区域设置因为我可能会搞砸他们正在使用的其他希腊软件。

请人们帮助我...我正在计算机上使用GREEK语言失去理智。对任何能帮助我解决这个问题的人来说,我真的很感激,也很感激

(我将我的区域设置设置为希腊语)插入语句i导入0.25作为sale_price和5.26作为kwh。我正在使用断点,我使用InvariantInfo看到变量的值是0.25和1.2。当它们存储在DB中时存储为0和5.当我在区域设置“。”中设置十进制运算符而不是“,”时,我导入0.25和5.65并且它们被正确存储。当我将区域设置设置为英语我并插入0.25和5.65时,它们被正确存储

2 个答案:

答案 0 :(得分:0)

string ammount =(textBox2.Text).Replace(“,”,“。”);

答案 1 :(得分:0)

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

Application.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")