gpt4 book ai didi

c# - 字符串无法转换为 double

转载 作者:太空宇宙 更新时间:2023-11-03 20:51:20 26 4
gpt4 key购买 nike

我有一个奇怪的问题。我首先显示我在 sortLIST 函数中遇到的错误,这看起来很奇怪。如调试错误中所见,字符串“i”出现问题,由“,”分隔。第一个参数是 0.48,它是一个 double 。无论如何错误说:

输入的字符串格式不正确

我也曾尝试删除 CultureInfo("en-Us") 行,但没有成功:

enter image description here

现在我已经尝试模拟上面的代码并在按钮控件中执行这段代码,在这里它确实有效并且没有给出错误:

private void button1_Click(object sender, EventArgs e)
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
String i = "0.48,trx/btc,coss,hitbtc2,0.0000062000 / 0.0000066000,0.0000061502 / 0.0000061701,,0.48%";
double test = double.Parse(i.Split(',')[0]);

MessageBox.Show(test.ToString());
}

什么会导致这个错误?为了安全起见,我在应用程序的所有函数中都添加了以下行:

System.Threading.Thread.CurrentThread.CurrentCulture =
new System.Globalization.CultureInfo("en-US");

最佳答案

您上传的图像显示您实际上正在运行多个线程,但只为当前线程设置了文化。

为了克服这个问题,您可以将所需的文化分配给一个变量,并在 Task.Factory.StartNew 中使用它。你可以这样做:

var culture = new System.Globalization.CultureInfo("en-US");
return Task.Factory.StartNew(() =>
{
// use culture here
Thread.CurrentThread.CurrentCulture = culture;

// your actual code here
String i = "0.48,trx/btc,coss,hitbtc2,0.0000062000 / 0.0000066000,0.0000061502 / 0.0000061701,,0.48%";
double test = double.Parse(i.Split(',')[0]);
});

正如@madreflection 所指出的,您可以将所需的区域性传递给 double.Parse() 方法:

// put this at the top of your file
var culture = new System.Globalization.CultureInfo("en-US");

// use this inside Task.Factory.StartNew
double test = double.Parse(i.Split(',')[0], culture);

甚至在 Task.Factory 中使用 CultureInfo.InvariantCulture(感谢@Olivier):

double test = double.Parse(i.Split(',')[0], CultureInfo.InvariantCulture);

关于c# - 字符串无法转换为 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54935552/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com