C语言求解~~急~

来源:百度知道 编辑:UC知道 时间:2024/06/17 16:21:34
#include<stdio.h>
void mian()
{float x=2.7181;
x=(int)(x*100+0.5)/100.0;
printf("x=%f\n",x);
}
答案是:x=2.72
问一下为什么不是2,“/”不是除了后要取整的嘛?
我还是有点不懂。。。
x=(int)(x*100+0.5)/100.0;
这句不是已经把2赋给x了吗?
(int)(x*100+0.5)的值到底是几?
那不是之前的值被冲掉了嘛?

楼上都是空话,其实楼主的写法完全正确,关健是运算顺序,给后面整个表达式打个括号后再(int)

补:
x=(int)(x*100+0.5)/100.0;
这句不是已经把2赋给x了吗?
//不是 这句是把2.72给x
//x=(int)((x*100+0.5)/100.0);才是把2给x
//(int)(x*100+0.5)/100.0是先算(int)(x*100+0.5)再除以100

(int)(x*100+0.5)的值到底是几?
//这个值是272
那不是之前的值被冲掉了嘛?
//注意呀!!x=(int)(x*100+0.5)/100.0 这句话本来的意思是四舍五入保留小数点两位

你是用%f输出浮点数!

因为你不是float型输出麻

因为你的x是float型,所以是浮点数。
强制转化类型是从右向左转,最后是转到等号左边的类型的。

%f是按照浮点格式输出。。。。。汗

你先定义X是float型的
然后再强制转换为int
%f是按照浮点格式输出
就这样