C# Decimal.Parse/Double.Parse返回一个不带小数点的值

C# Decimal.Parse/Double.Parse返回一个不带小数点的值,c#,sharepoint,sharepoint-2007,C#,Sharepoint,Sharepoint 2007,我正在Sharepoint 2007中使用工作流。在工作流中,我访问Inforpath表单,将代码隐藏起来,并向Sharepoint列表添加一些重复值 string strProfitMargin = ProfitMargin; decimal margin1 = decimal.Parse(strProfitMargin); listItem["Test9"] = Math.Round(margin1, 2).ToString(); 假设ProfitMargin的值为“0.4230762

我正在Sharepoint 2007中使用工作流。在工作流中,我访问Inforpath表单,将代码隐藏起来,并向Sharepoint列表添加一些重复值

string strProfitMargin = ProfitMargin;

decimal margin1 = decimal.Parse(strProfitMargin);

listItem["Test9"] = Math.Round(margin1, 2).ToString();
假设ProfitMargin的值为“0.423076230769231”

Decimal.Parse
方法返回不带小数点的
423076230769231
。最终是数学。圆也不起作用。这在我的机器里工作得很好。但在QA服务器中,它不起作用。请帮我解释一下为什么decimal.Parse方法不起作用?对于double.Parse()来说,同样的方法是返回一个不带小数的值


提前谢谢

我的强烈怀疑是,您运行的机器的文化不使用
作为小数点

明确指定区域性,例如指定不变区域性

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

decimal.Parse(“0.423076230769231”)
为我返回
0.423076230769231
。这是在什么文化下运行的?我们的服务器在德国。我想应该是“德德”。这就是原因吗?Thanx是的,很有可能。该区域性使用
作为十进制分隔符。使用
CultureInfo.InvariantCulture
进行分析,或者使用使用
而不是
的十进制文本。是的,您是正确的。这起作用了。谢谢。谢谢。我试试这个方法。我们的服务器在德国。但是在Web部件中已经有了Double.Parse()方法,可以很好地工作。谢谢你的回答。