c++程序int型直接转换成float型可以这样转吗?

inta=6;intb=5;floatc=flaot(a)/float(b);这样出来的c值能出现小数吗?... int a=6;
int b=5;
float c = flaot(a)/float(b);
这样出来的c值 能出现小数吗?
展开
 我来答
百度网友812a5d0
2018-03-07 · TA获得超过1.3万个赞
知道小有建树答主
回答量:59
采纳率:93%
帮助的人:8549
展开全部

直接用(int)后接需要转换的变量,但是需要强调,转换方式为去掉二进制数小数点后部分的数字!

具体如下:

说明:图中数字都是以二进制方式存储的,所以x=1011.0011 0011 0011 0011......B

强制转换后,去掉小数点后部分数字,所以y=11D;

所以x-y=0.0011 0011 0011 0011.......B =0.1999999......D

所以100(x-y)=19.99999.......D

强制转换后只去掉小数点后部分的数字,所以z=19.

FrankHB1989
2018-01-10 · TA获得超过4.2万个赞
知道大有可为答主
回答量:4569
采纳率:100%
帮助的人:3141万
展开全部
注意拼写- -
LZ给出的代码并不是直接的转换,而是float的构造函数形式的初始化。当然,中间经过了转换,和以下的显式类型转换作用相同,都可以达到LZ的目的。
典型的C风格转换为:
float c = (float)a /(float)b;;
典型的C++风格转换为:
float c = static_cast<float>(a) / static_cast<float>(b);;
前者和C语言兼容(注意LZ的版本不兼容);后者虽然罗嗦,不过清楚,容易通过查找关键字找到转换处。
当然,由于内置的除法(built-in operator/)对于只要有浮点数参加的运算,会把所有的操作数都转化为浮点数,所以这样就可以了:
float c = (float)a / b;;
float c = static_cast<float>(a) / b;。
----
另外 wolinxuebin 错误。c是float类型,不表示后面的operator/就是浮点除法,两者无关。
而且, c = (a * 1.0) / (b * 1.0) 不保险,虽然很少有编译器会死脑筋到不把*1.0优化掉,但是万一没有优化,效率会大大降低(尤其是对于没有FPU的机器)。就算这样使用,直接 c = a * 1.0 / b 就可以了。
====
[原创回答团]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式