德国系统上的Double.Parse导致逗号而不是小数点

时间:2013-05-16 21:20:03

标签: c# globalization

我有以下内容:

 private static string someValue = "0.1";

我需要将其转换为double才能进行一些计算。 在德国系统上,我将转换为0,1而不是0.1,我需要它为0.1。 我尝试了以下方法:

double d = Convert.ToDouble(s_valueDeadband10Percent, CultureInfo.InvariantCulture.NumberFormat); // still getting 0,1

AND

double d = Convert.ToDouble(s_valueDeadband10Percent, CultureInfo.InvariantCulture); // still getting 0,1

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

  

在德国系统上,我将转换为0,1而不是0.1,我需要它为0.1。

不,你没有得到其中任何一个。您得到的double值约为十分之一。 double值根本不是文本“事物”。它可以转换到文本,但这是一个不同的操作。如果您确实需要文本值,则需要找到该操作的位置,并将 更改为使用CultureInfo.InvariantCulture。但是如果你可以在没有转换回字符串的情况下逃脱,那就更好了。

当然,如果可能,您应该将静态变量更改为double以开始:

private static double someValue = 0.1;

这样你也可以避免解析。

答案 1 :(得分:2)

我认为你将双尾的字符串表示与实际值混淆。

您的代码应将字符串“0.1”很好地转换为0.1d。无论何时打印它(在调试器中,在控制台上或在网页上),都需要将其转换回字符串,这可能会在您的情况下隐式发生。 double只是一些浮点位,它本身没有定义它的打印表示。

如果在德国文化中完成从double到string的转换,您将看到“0,1”。

尝试打印

d.ToString(CultureInfo.InvariantCulture)