c# - 从字符串中读取 double 值

标签 c# .net double

我已经尝试解决这个问题好几个小时了,但完全不明白编译器在这里做了什么。我的字符串基本上是这样的:

"KL10124 Traitor #2 - +XX-+0.25 - More Stuff"

并且需要以编程方式读取 double “0.25”。调用s上面的字符串,下面两行不行:

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

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

double d = Convert.ToDouble(h2.Replace('.',','));

它没有改变任何东西,输出仍然是“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;

为什么前两个版本不起作用?最后一段代码不可能是执行此操作的正确方法。

最佳答案

尝试使用

double d = Convert.ToDouble(h2, CultureInfo.InvariantCulture);

代替

double d = Convert.ToDouble(h2);

关于c# - 从字符串中读取 double 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12092989/

相关文章:

c# - Entity Framework `AsNoTracking` 不适用于匿名投影

c# - 在 .Net 中使用 iphlpapi.dll 在 x64 机器上添加新的 IP 地址

c# - 将 Decimal 数组转换为 Double 数组

c# - DataContract 在 WCF 客户端服务引用中不可用

索引器的c#程序

c# - 如何提供 ProjectItem.get_FileNames(i) 的实现?

Java 舍入( double )

Java:组合函数产生十进制数

c# - 如何将 AutoFixture 自定义应用于从基类继承的任何内容?

c# - 创建 CaSTLe.Windsor 拦截器的问题