为了账号安全,请及时绑定邮箱和手机立即绑定

c++ float强制转换成int类型

c++ float强制转换成int类型

C++
Helenr 2019-04-01 09:00:18
float x = 11.20;int y = (int)x;int z = (int)(100 * (x - y));cout<<z;z为什么会是19, 而不是20呢?
查看完整描述

3 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

直接用(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.


查看完整回答
反对 回复 2019-04-03
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

浮点数在计算机中以二进制存储的,有些数用二进制表示,是无限循环的,, 会丢失一些精度,

查看完整回答
反对 回复 2019-04-03
  • 3 回答
  • 0 关注
  • 3602 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信