Decimal.Parse和不正确的字符串格式错误

我有一个十进制解析的简单问题。 以下代码在我的计算机上正常工作,但是当我在服务器上发布项目(VPS,Windows Server 2008 R2标准版)时,我收到错误“输入字符串的格式不正确”。 有什么想法有什么不对吗?

我将解析后的数字存储在MySQL数据库表中 – 列类型为DECIMAL(10, 4)

源代码:

 CultureInfo nonInvariantCulture = new CultureInfo("en-AU"); //or pl-PL nonInvariantCulture.NumberFormat.NumberDecimalSeparator = "."; Thread.CurrentThread.CurrentCulture = nonInvariantCulture; string toConvert = ("3,4589").Replace(",", "."); //it's an example decimal parsed = decimal.Parse(toConvert); 

如果您知道数字的字符串表示forms使用逗号作为小数分隔符,则可以使用自定义NumberFormatInfo解析值:

 var number = "3,4589"; var numberFormatInfo = new NumberFormatInfo { NumberDecimalSeparator = "," }; var value = Decimal.Parse(number, numberFormatInfo); 

您还可以将现有的CultureInfo用于您知道将像pl-PL一样工作的文化,但我认为这更容易理解。

另一方面,如果数字的格式是3.4589您可以简单地使用CultureInfo.InvariantCulture ,您可以将其视为一种基于en-US的“默认”文化:

 var number = "3.4589"; var value = Decimal.Parse(number, CultureInfo.InvariantCulture); 

您可以构建自定义NumberFormatInfo来解析您的值

这些线上的东西

 NumberFormatInfo numinf = new NumberFormatInfo(); numinf.NumberDecimalSeparator= ","; decimal.Parse("3,4589", numinf); 

我想对于以下代码的工作将解决问题。

 decimal parsed = decimal.Parse(toConvert, CultureInfo.InvariantCulture);