我有一个十进制解析的简单问题。以下代码在我的计算机上正常工作,但是当我在服务器上发布项目(VPS,Windows Server 2008 R2标准版)时,我收到错误“输入字符串的格式不正确”。任何想法有什么不对?
我将解析后的号码存储在MySQL DB表中 - 列类型为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);
答案 0 :(得分:23)
如果您知道数字的字符串表示形式使用逗号作为小数分隔符,则可以使用自定义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);
答案 1 :(得分:4)
您可以构建自定义NumberFormatInfo
来解析您的值
这些内容
NumberFormatInfo numinf = new NumberFormatInfo();
numinf.NumberDecimalSeparator= ",";
decimal.Parse("3,4589", numinf);
答案 2 :(得分:4)
我想围绕下面的代码解决问题。
decimal parsed = decimal.Parse(toConvert, CultureInfo.InvariantCulture);