c++的数据类型自动转换问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 10:46:18
int m;
float n=1.555;
m=n*100+0.5;
cout<<m;
执行这个之后输出的是155,
如果把n的值改为1.5555,
执行之后就变成输出156了,
请问这2个各自都是怎么转换数据的类型的?

C语言中,很多数字并不是绝对的数字,有很多就是“约等于”的数据,因为很多小数并不能用二进制数精确的标识,比如这里的1.55就不能,把程序修改成
int m;
float n=1.555;
float h = n*100;
printf("%.8f",h);
m=n*100+0.5;
cout<<m<<endl;
你会惊奇的发现上面的那个h会输出:155.49999475
而不是我们想象的155.5 。
C语言是向下取整的,155.49999475加上0.5刚好差一点点到达156所以取整后编程155。
如果将1.55改的稍微大一点点,甚至改成1.55500001,结果都会输出156了。

不会了,学习学习人家的。。。 楼上讲的很明白。。