Decimal.Parse/Double.Parse返回没有小数点的数值

4

我正在使用Sharepoint 2007的工作流。在工作流中,我通过代码后台访问Inforpath表单,并将一些重复值添加到Sharepoint列表中。

string strProfitMargin = ProfitMargin;

decimal margin1 = decimal.Parse(strProfitMargin);

listItem["Test9"] = Math.Round(margin1, 2).ToString();

假设对于"ProfitMargin",我得到了一个值"0.4230769230769231"Decimal.Parse 方法返回没有小数点的值4230769230769231。最终 Math.Round 也不起作用。在我的机器上它可以完美运行。但是在 QA 服务器上却不能工作。请帮助我并解释为什么 decimal.Parse 方法不起作用?同样的问题也出现在 double.Parse() 上,返回一个没有小数点的值。
提前感谢您!

1
对我来说,decimal.Parse("0.4230769230769231") 返回 0.4230769230769231。这是在哪个文化环境下运行的? - Oded
我们的服务器在德国。我认为它应该是“de-DE”的原因。谢谢。 - SPKan
很可能是这样。该文化使用“,”作为小数分隔符。使用CultureInfo.InvariantCulture进行解析或使用使用“,”而不是“。”的十进制文字。 - Oded
1个回答

7

我强烈怀疑你正在使用一个不使用.作为小数点的文化背景来运行电脑。

请明确指定文化背景,例如使用固定文化背景(invariant culture)。

decimal margin1 = decimal.Parse(strProfitMargin, CultureInfo.InvariantCulture);

谢谢,我会尝试这种方法。我们的服务器在德国。但是Web部件中已经有Double.Parse()方法可以正常工作。感谢您的回答。 - SPKan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接