C#系列之显示转换

今天,我们将就显示转换来聊一聊C#系列中的四种显示转换,它们分别是:括号强转Parse法转换,Convert法,以及其它类型转string的转换法。

1.括号强转

->整型强转

作用:一般情况下,将高精度的类型强制转换为低精度。

语法:变量类型  变量名  =  (变量类型)变量;

注意:精度问题 范围问题

对于相同大类的有/无符号的整形来说:

//对于有符号的整形,例如:
sbyte sb=1;
short s=1;
int i=40;
long l=1;
//括号强转可能会出现范围问题,造成的异常是打印出现负数等
s=(short)i;
Console.WriteLine(s);
//对于无符号的整形来说,几乎一致,例如:
byte b=1;
uint ui=1;
b=(byte)ui;

->浮点之间的强转

//浮点数之间
float f=1.1f;
double d=1.123456789f;

f=(float)d;
Console.WriteLine(f);

其中发生了精度的缺失,其运行结果为:1.1234568,我们可以发现其四舍五入的类似变化,因此,我们可以这样认为:在double类型转化为float类型时,可能会发生四舍五入的精度变化。

->无符号与有符号之间的转换

当正数转换时不会出现异常,当负数转换时,出现异常,如:

//无符号与有符号
uint ui2=1;
int i2=-1;
ui2=(uint)i2;
Console.WriteLine(ui2);

其结果将转换为二进制数,出现异常。所以,在强转时,一定要注意范围,不然得到的结果可能有异常!

->浮点与整型

浮点数强转化为整形时,会直接抛弃小数点后面的小数。

i2=(int)1.64f;
Console.WriteLine(i2);

->char和数值类型

结果为其ASCII码的对应值,例如:

//char和数值类型
i2='A';
char c=(char)i2;
Console.WriteLine(c);

以上的结果为:A

->bool和string类型

bool和string类型之间无法通过括号强转!会发生报错,诸君可以自行尝试。

2.Parse法

作用:把字符串类型转换为其它对应类型。

语法:变量类型.Parse(“字符串”)

注意:字符串必须能够转换为对应的类型,否则会报错!值的范围必须是能够被变量存储的值,否则报错!

->有符号

short s3=short.Parse("40000“);
Console.WriteLine(s3);
//一些高级写法,如:
sbyte sb3=sbyte.Parse("1");
Console.WriteLine(sb3);

Console.WriteLine(sbyte.Parse("1"));
//以上两项有着相同的效果

->无符号

与有符号类型基本相同,此处不再赘述。

->浮点数

//浮点数
float f3=float.Parse("1.2323");
double d3=double.Parse("1.2323");

->特殊类型

//特殊类型
bool b5=bool.Parse("true");
Console.WriteLine(b5);
//此处只能写成true或者false的形式,否则会报错!

char c2=char.Parse("A");
Console.WriteLine(c2);
//此处只能写一个,因为char类型不允许写多个。

3.Convert法

作用:更准确地将各个类型之间进行相互转换

语法:Convert.To目标类型(变量或常量)

注意:填写的变量或者常量必须正确,不然会报错!

精度更准确,特殊值也可以转化(即可以转换为任意类型)。每个类型都存在对应的Convert中的方法。

//转字符串,如果把字符串转换为对应类型,字符串必须合法合规
int a=Convert.ToInt32("12");
Console.WritLine(a);
//精度比括号强转好一点,会四舍五入(因为我们知道,括号强转对于浮点数类型转化为整数类型会直接舍去小数点后面的数值。)
a=Convert.ToInt32(1.45678f);
Console.WriteLine(a);

//把bool类型也可以转换成数值类型,其中true对应1,false对应0
a=Convert.ToInt32(true);
Console.WriteLine(a);
a=Convert.ToInt32(false);
Console.WriteLine(a);

十四种变量类型

 

4.其它类型转string

作用:拼接打印

语法:变量.ToString();

string str6=1.ToString();
str6=true.ToString();
str6='A'.ToString();
str6=1.2f.ToString();

int aa=1;
str6=aa.ToString();
bool bo6=true;
str6 =bo6.ToString();

当我们进行拼接打印时,就会自动调用ToString转换为string,例如:

Console.WriteLine("123123"+1+true);
str6="123123"+1+true+1.23;

5.总结

对于以上四种显示转换,我们来小结一下。

//括号强转会缺失精度,特别是小数转化为整数时,小数点后面的数字会被直接舍弃,当doube类型转化为float类型时,在一定范围內将进行四舍五入的变换。注意范围,否则可能出现一些异常错误,如打印出现负数等。

//Parse法则能够将字符串转化为对应类型,前提是,字符串必须正确。

//Convert法则可以准确地将各个类型之间进行相互转化,并且精度更高,对于小数转化为整数的过程种,Convert法会进行四舍五入的变换

//拼接打印会自动调用ToString的方法。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nicole Potter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值