我试图解析双打从字符串infering用下面的代码:转换字符串到双是不对的
double.TryParse(contractResult.Result.ValueWithDiscount, NumberStyles.Any, CultureInfo.InvariantCulture, out ValueWithDiscount);
double.TryParse(contractResult.Result.DebitValue, NumberStyles.Any, CultureInfo.InvariantCulture, out Value);
但由于某种原因,它不工作。我有两台服务器有不同的配置。一个是解析"0.5"
到0.5
,但另一个解析为5
。
我还试图用:
double.TryParse(contractResult.Result.DebitValue, NumberStyles.Any, CultureInfo.CurrentCulture, out Value);
但随后这是正确解析服务器开始解析到50
,而不是0.5
。它发生的原因有哪些?
NumberFormatInfo loNumberFormatInfo = new NumberFormatInfo();
loNumberFormatInfo.NumberDecimalSeparator = ".";
loNumberFormatInfo.NumberGroupSeparator = ",";
double ValueWithDiscount = 0.0;
double.TryParse(contractResult.Result.ValueWithDiscount, NumberStyles.Any, loNumberFormatInfo, out ValueWithDiscount);
logger.Log("ValueWithDiscount: " + contractResult.Result.ValueWithDiscount);
logger.Log("ValueWithDiscount Parsed: " + ValueWithDiscount);
服务器的作品: -
更新使用下面的代码值
ValueWithDiscount: 0.50
ValueWithDiscount Parsed: 0,5
服务器不工作:
ValueWithDiscount: 0,5
ValueWithDiscount Parsed: 5
我不知道这是答案,但我曾经有过类似的问题,原来是位置设置和不同地区使用。或者为小数。 –
您可以添加[MCVE](https://stackoverflow.com/help/mcve)吗?例如,您可以使用[.NETFiddle](https://dotnetfiddle.net/)。 – aloisdg
在不能正常工作的机器上,您是否100%肯定**字符串是“0.5”?它可能是'0,5'吗?你能告诉我们'contractResult.Result.ValueWithDiscount'在哪里填充? – mjwills