从字符串中读取double值

Elu*_*FTW 2 .net c# double

我试图解决这个问题几个小时,绝对不明白编译器在这里做了什么.我有基本上看起来像这样的字符串:

"KL10124 Traitor #2 - +XX-+0.25 - More Stuff"
Run Code Online (Sandbox Code Playgroud)

并需要以编程方式读取双"0.25".调用s以上的字符串,以下两行不起作用:

string[] h = s.Split('-');
string h2 = h[2].Substring(1,h[2].Length - 2);
double d = Convert.ToDouble(h2);
Run Code Online (Sandbox Code Playgroud)

如果我显示d的输出是"25".我认为这可能取决于'.' resp','文化依赖,但如果我插入

double d = Convert.ToDouble(h2.Replace('.',','));
Run Code Online (Sandbox Code Playgroud)

它没有改变一件事,输出仍然是"25".

但最后,如果我执行如下的强力方法,我会在屏幕上得到逐字输出"0,25"

double d;
string[] h = s.Split('-');
string h2 = h[2].Substring(1,h[2].Length - 2);
if (h2.Contains("."))
{
    string[] h3 = h2.Split('.');
    d = Convert.ToDouble(h3[0]) + Convert.ToDouble(h3[1])/100;
}
else
{
    d = Convert.ToDouble(h2);
}
return d;
Run Code Online (Sandbox Code Playgroud)

为什么前两个版本不起作用?最后一点代码不是正确的方法.

Ily*_*nov 6

尝试使用

double d = Convert.ToDouble(h2, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

代替

double d = Convert.ToDouble(h2);
Run Code Online (Sandbox Code Playgroud)