C#基础(2)数据类型转化
数据类型转化
精度指小数点后面的精确度)
条件: 数据要兼容,都是值类型
从取值范围小的往大的转 (低精度到高精度)
一、隐式转化(低精度转化为高精度)
//加f表示单精度
// float a = 1;
// double b = 1.2f;
二、强制转化
从取值范围大的向小的转化需要进行强制转换,其缺点是精确度会丢失;
1、使用(类型名)变量名进行强制转换
float a = 10.4f;
int b = (int )a;//a = 10 ;精度丢失
2、使用Parse方法.一般用于转换string
string str = "123";
b = int.Parse(str);//括号里面写字符串
Console.WriteLine("{0}",b);
string str = "123.2";
float b = float.Parse(str);
Console.WriteLine("{0}",b);
避免崩溃 int.Try.Parse (str,out )
string str = "123a";
int c = 0;
bool b;
if (b = int.TryParse (str, out c)) {
//如果转换成功 输出C
Console.WriteLine ("{0}", c);
} else {
Console.WriteLine ("failure");
//失败输出 falilure
}
3、使用Convert类方法
(把string类型转化为int //如果有字符的话会转换失败)
string str = "123";
int c = 0;
c = Convert.ToInt32(str);
Console.WriteLine ("{0}",c);
4、其他类型转为string类型 .Tostring()
int d = 45;float m = 53.2131f;
string str1 = 1234.ToString ();
string str2 = d.ToString ();
string str3 = m.ToString ();
Console.WriteLine (str);
// int c = (int)1.4f;//(不是四舍五入,直接抹掉后面小数点后的数字)
// a = (float)b;//以上a为单精度 b 为双精度
转化方式写在转化目标前面
单双精度不是说小数点后的几位数,而是精确程度的区别
// string num ="123";
// int d = int.Parse(num);//字符串转化为int类型
注!可能会强转失败 例如当string里面有字母的情况下