章节
问答
课签
笔记
评论
占位
占位

C#的类型转换

上一节我们学习了4种数据类型,也提到每种类型的变量只能存这种类型的数据。可是,有时候真的需要把不同类型的值放在一起运算,比如这种:3.5+8 这时候怎么办呢?有下面2种情况:

自动类型转换:2种不同类型的数据运算,低精度类型会自动转换为较高精度的类型。
以3.5+8为例,显然数字8的精度较低(int),而3.5的精度较高(double),所以,8会自动转换为double型,即转换为3.5+8.0进行运算,结果为11.5。

请看这个例子:double d=2; 2的精度显然低于变量d的精度,所以2会自动转换为2.0然后赋值给d。
再看这个例子:int i=3.0;变量i的精度低于3.0,但是由于i已经声明为int型的变量,变量的值可以变,但变量的类型可不能变来变去的,所以这条命令会出错的。

强制类型转换:无法自动转换为我们需要的类型,可以用强制类型转换,比如上例可以这样完成:

int i=(int)3.0;

数字前面的(int)表示转换的目标类型为int,3.0会被强制转换为3。
需要注意, double 型强制转换为int型将失去小数部分,比如(int)2.8,我们得到的将是2。

任务

这段程序计算变量d和x的和,并打印。但是d和x的类型不同,计算会出错吗?

请把第 12 行的代码改为 int x = (int)d + 1;这样就对变量d进行了强制类型转换。

那么,程序运行的结果会是多少呢?

?不会了怎么办

强制类型转换的()中写的是目标类型,同时,转换可能会损失精度

||
1
2
using System;
using System
    .Collection
    s.Generic;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
提交
重置代码
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最新回答 / 槿未一
精度(从低到高)char<int<long<float<double

最新回答 / Henry_pan
因为进行强制转换(int),把原先的double 中的d值2.5,强制转换为2,且int是整型,它后面是没有小数点的,所以是2,而不是2.0!

已采纳回答 / 慕用8454954
Console.writeLine将Y直接以字符串类型5输出,若包含双引号则输出“Y”,或者Console.WriteLine("{0}",Y)也输出字符串5

已采纳回答 / 慕粉133046788
int长度数据类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)

最新回答 / CroMo
WriteLine()是函数,不是变量

最新回答 / qq_幸福时光_1
要用英文括号

最新回答 / qq_酒笙清栀_3
  <...图片...>      可以的 不要使用在线运行

最新回答 / 慕斯卡0282718
大哥 看人家这次要教你什么

最新回答 / 慕移动9181930
亲,可以把代码贴出来。我给看一下。cwrvuixhffjciuzzaohbrpbwbngkyqghrogzolduanrkufrcvwehkwomldbdubsfulmqyvlioxdvywqbmtab

最新回答 / qq_燚_14
double i = (int)3.1;Console.1WriteLine(i);结果是3你去试试

最新回答 / 天冰无雪
java中可以,c#不可以,可能是出了小问题。你可以打开visual studio,把你写的代码复制进去,然后测试。

最赞回答 / 慕粉3508730
(int )2.5 +1 (int )(2.5+1),(int )(2.5) +1 这三种写法都可以

已采纳回答 / 慕粉3943473
不会被四舍五入 直接舍弃小数

最新回答 / 御龙无双
我想的是出于C#一共才只有两篇文章,所以没设计出那个功能,如果你想看结果,只有复制到VS中打开,这文章也比较基础
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言