1

我有以下内容:

 private static string someValue = "0.1";

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

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

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

有任何想法吗 ?

4

2 回答 2

5

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

不,你什么都得不到。你得到的double值大约是十分之一。值double根本不是文本“事物”。它可以转换为文本,但这是一个不同的操作。如果您真的想要一个文本值,您需要找到该操作的位置,并将其更改use 。CultureInfo.InvariantCulture但是,如果您完全不用转换回字符串就可以逃脱,那就更好了。

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

private static double someValue = 0.1;

这样你也可以避免解析。

于 2013-05-16T21:22:40.780 回答
2

我认为您将双精度的字符串表示与实际值混淆了。

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

如果在德国文化中完成从双精度到字符串的转换,您将看到“0,1”。

试试打印这个

d.ToString(CultureInfo.InvariantCulture)
于 2013-05-16T21:22:26.747 回答