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

float x = 11.20;

int y = (int)x;
int z = (int)(100 * (x - y));
cout<<z;
z为什么会是19, 而不是20呢?

Helenr
浏览 3603回答 3
3回答

慕侠2389804

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

qq_笑_17

浮点数在计算机中以二进制存储的,有些数用二进制表示,是无限循环的,, 会丢失一些精度,
打开App,查看更多内容
随时随地看视频慕课网APP