一、隐式转换
是一种安全类型的转换,不会导致数据丢失。
由小到大:将占用字节小的、取值范围小的、精度小的,转换为占用字节大的、取值范围大的、精度高的。
不需要任何的修饰符,会自动转换
sbyte englishScore = 100;
// sbyte --> int
int myScore = englishScore;
// int --> long
long classScore = myScore;
// int --> float
float newScore = myScore;
// float --> double
double newClassScore = newScore;
二、显式转换(强制转换)
由大到小:将占用字节大的、取值范围大的、精度高的,转换为占用字节小的、取值范围小的、精度低的。
需要强制转修饰符,会有精度的缺失,甚至数据的错误
转换情况:知道这个数字,在小的数据类型的取值范围内
转换方式:
1) (数据类型) 变量名
- int --> float
int a = 1;
float b = (float) a;
- int --> char
int num = 97;
char letter = (char) num;
// 输出 letter 为:a < ASCI码 >
- int --> bool
int 和 bool 之间不能进行转换
2) Convert.To数据类型(变量名)
是string字符串类型转换为其他数据类型
string x;
bool a = Convert.ToBoolean(x);
int b = Convert.ToInt32(x);
float c = Convert.ToSingle(x);
char d = Convert.ToChar(x);
3) 数据类型.Phrse(变量名)
是string字符串类型转换为其他数据类型
string x;
int a = int.Parse(x);
float b = float.Parse(x);
char c = char.Parse(x);
bool d = bool.Parse(x);
double e = double.Parse(x);
4) 变量名.ToString()
其它类型转换为string字符串类型
float score = 99.9f;
string classScore = score.ToString();
补充:
1) 两个整型数字进行数学运算,得到的结果还是一个整型数字
2) 如果想得到浮点型的计算结果,前面的数字至少有一个是浮点型
int num_1;
int num_2;
float sum = (flaot)num_1 / num_2;
3) 在数字中,C#中的布尔类型非 0 即是真,只有 0 是假
4) 保留两位小数的方法:
- .ToString("0.00");
- Math.Round(数字,保留几位)
float Pi = 3.1415926f;
//方法一:
Console.WriteLine(Pi.ToString("0.00"));
//方法二:
Console.WriteLine(Math.Round(Pi,2));