类型如果相兼容的两个变量,可以使用自动类型转换或者强制类型转换。

比如int和double,他们就属于同意类型即可相互转换,不过要注意的是,double转int可能会丢失精度哦~

那么, string和int或者string与double,这个时候是不能直接进行转换的,不过可以使用Convert转换工厂进行转换。

string s = "123";
// 将字符串类型转换成double
double d = Convert.ToDouble();

// 将字符串类型转换成int
int n = Convert.ToInt32(s);

注意:使用Convert进行类型转换的时候,需要满足一个条件,就是“面儿上要过的去”,啥叫面儿上要过的去呢?比如上面举的例子,字符123可以用来转double,转int,因为毕竟是123。但是不能来个string s = "123abc",这个就没法直接转double啦。

来个小练习:让用户输入姓名 语文 数学 英语三门课的成绩,然后给用户显示:XX,你的总成绩是xx分,平均分为xx分。

Console.WriteLine("请输入你的姓名");
string name = Console.ReadLine(); // 接收用户输入的内容
Console.WriteLine("请输入你的语文成绩");
string strChinese = Console.ReadLine();
Console.WriteLine("请输入你的数学成绩");
string strMath = Console.ReadLine();
Console.WriteLine("请输入你的英语成绩");
string strEnglish = Console.ReadLine();

假设用户输入张三,55,77,88。由于字符串相加,最终会变成相链接。所以需要将字符串转成int或者double类型。

int chinese = Convert.ToInt32(strChinese);
int math = Convert.ToInt32(strMath);
int english = Convert.ToInt32(strEnglish);

so,现在可以直接相加了。

Console。log("{0}你的总成绩是{1},平均成绩是{2}", name,chinese+math+english,(chinese+math+english)/3)

转double的写法:

double chinese = Convert.ToDouble(strChinese);
double math = Convert.ToDouble(strMath);
double english = Convert.ToDouble(strEnglish);
double sumScore = chinese + math + english;
double avg = (int)sumScore*1.0 / 3;
Console。log("{0}你的总成绩是{1},平均成绩是{2:0.00}", name,chinese+math+english,(chinese+math+english)/3)

这边还有个小知识点,占位符{2:0.00}代表小数位保留2位。