2012-04-21 83 views
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; 

我的问题是,当区域设置被设置为希腊语,它不小数点后接受任何数字,当U与输入它“,”

我试着InvariantInfo为了用“。”输入小数,但又不接受它们。

有趣的是,当你进入控制面板 - >区域和语言 - >附加设置时,你可以设置你想要的小数点和数千的操作符。如果您将小数点符号设置为“。”.......一切正常运行。

无论您使用InvariantInfo并输入为“”或者,如果你CurrentInfo并输入它作为“”

这是推动我疯了我试过很多方法,不仅解析法,只有这样,才能大概是将小数点符号设置为“。”但我不能绕过改变人们的区域设置,因为我可能搞砸了他们正在使用的其他希腊软件。

请人们帮助我..我在计算机上用希腊语语言失去了我的想法。我会真正感谢和感谢任何人可以帮助我解决这个问题

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

+2

请发布您尝试解析的小数的例子。 – Oded 2012-04-21 08:11:16

+2

这与MySQL有什么关系?你的标题和标签提到了它,但是在问题本身中我看不到任何与它有关的东西......请说明你如何试图使用InvariantInfo,因为那应该没问题。 – 2012-04-21 08:11:59

+0

该软件正在将值导入到MySql DB字符串中initialquery =“INSERT INTO SOLAR_INCOME(ID,E_DATE,KWH,SALE_PRICE,AMMOUNT,T_ID)VALUES('”+ id +“','”+ date.ToString(“yyyy: MM:dd“)+”','“+ kwh +”','“+ sale_price +”','“+ totalamnt +”','“+ tid +”')“; myMySqlConnection.Open(); MySqlCommand command1 = new MySqlCommand(ini​​tialquery,myMySqlConnection); command1.ExecuteNonQuery(); – 2012-04-21 09:41:01

回答

0

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

0

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

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