繁体   English   中英

如何将字符串数组转换/解析为双精度?

[英]How to convert/parse string array to double?

我有一个带有文本和数字的字符串数组。 我从中提取了一个数字,但我无法将它放入一个intdouble变量中,以便以后用于比较或其他任何事情。

相反,我使用了无法像我想要的那样工作的比较方法,从这两个字符串中输出更大的数字。 我想要的只是将数字放入变量中或让该比较方法起作用。 谢谢,我是初学者。

string[] Months = new string[12];
            Months[0] = "Január 1"; //1
            Months[1] = "Február 0"; //2
            Months[2] = "Marec 4,5"; //3
            Months[3] = "Apríl 8.3";  //4
            Months[4] = "Máj 13";   //5
            Months[5] = "Jún 17.3";  //6
            Months[6] = "Júl 20.5";     //7
            Months[7] = "August 21";    //8
            Months[8] = "September 15"; //9
            Months[9] = "October 8";    //10   
            Months[10] = "November 4";   //11
            Months[11] = "December 1.4";   //12

double result = 0;
double result2 = double.Parse(Months[5].Substring(Months[5].IndexOf(" ")).TrimStart());
                
//double.TryParse(double.Parse(Months[5].Substring(Months[5].IndexOf(" ")).TrimStart()), out result);
Console.WriteLine(result2);


 if (string.Compare(Months[4].Substring(Months[4].IndexOf(" ")).TrimStart(), 
Months[5].Substring(Months[5].IndexOf(" ")).TrimStart()) > 0)
{
//Console.WriteLine("1");
Console.WriteLine(Months[4].Substring(Months[4].IndexOf(" ")).TrimStart());
}

如果你只想要每个的数字部分,在一个数组中:

var nums = Months.Select(m => double.Parse(m.Split()[1]));  

不带参数的Split()将字符串拆分为一个数组,使用任何空格作为分隔符。 然后我们选择拆分数组中的第二个条目以仅访问数字部分,并将其传递给double.Parse()以将每个子字符串解析为双精度。

Months.Select()是一个 linq 函数,如果您想了解更多信息,需要添加一个 using for System.Linq ,我建议您了解更多关于 linq 如何工作的信息。

您可以使用double.Parse(yourString, CultureInfo.InvariantCulture)来解析您的字符串,如果您首先通过字符串中的空格将它们分成几部分。

string[] Months = new string[12];
Months[0] = "Január 1"; //1
Months[1] = "Február 0"; //2
Months[2] = "Marec 4,5"; //3
Months[3] = "Apríl 8.3";  //4
Months[4] = "Máj 13";   //5
Months[5] = "Jún 17.3";  //6
Months[6] = "Júl 20.5";     //7
Months[7] = "August 21";    //8
Months[8] = "September 15"; //9
Months[9] = "October 8";    //10   
Months[10] = "November 4";   //11
Months[11] = "December 1.4";   //12

var parts = Months[5].Split(" ");

double result2 = double.Parse(parts[1], CultureInfo.InvariantCulture);

Console.WriteLine(result2); // Prints 17,3

var month4Parts = Months[4].Split(" ");
var month5Parts = Months[5].Split(" ");

var month4AsDouble = double.Parse(month4Parts[1], CultureInfo.InvariantCulture);
var month5AsDouble = double.Parse(month5Parts[1], CultureInfo.InvariantCulture);
if (month4AsDouble < month5AsDouble) // If 13 < 17,3
{
    Console.WriteLine(month5AsDouble);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM