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

Ton*_*ony 12 .net c# decimal

我有一个十进制解析的简单问题.以下代码在我的计算机上正常工作,但是当我在服务器上发布项目(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);
Run Code Online (Sandbox Code Playgroud)

Mar*_*age 24

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

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

你也可以使用现有CultureInfo的文化,你知道它会起作用,pl-PL但我认为这更容易理解.

另一方面,如果数字的格式是3.4589你可以简单地使用CultureInfo.InvariantCulture,你可以考虑一种基于以下的"默认"文化en-US:

var number = "3.4589";
var value = Decimal.Parse(number, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)


Sma*_*aug 6

我想解决下面的代码可以解决这个问题。

decimal parsed = decimal.Parse(toConvert, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)


V4V*_*tta 5

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

这些方面的东西

NumberFormatInfo numinf = new NumberFormatInfo();
numinf.NumberDecimalSeparator= ",";    
decimal.Parse("3,4589", numinf);
Run Code Online (Sandbox Code Playgroud)