C语言程序设计(6)

来源:百度知道 编辑:UC知道 时间:2024/05/16 18:24:56
设有定义:float x=123.4567;,则执行以下语句后的输出结果是?
printf("%f\n",(int)(x*100+0.5)/100.0);

why?

我的答案是123.0
大家都答对了
我后来也想出了个所以然了
diligentfei,这位朋友说了出来
全称叫“混合运算的转换规则”

答案应该是:123.460000

x*100: 12345.67
x*100+0.5: 12346.17
(int)(x*100+0.5): 12346
12346/100.0: 123.460000

100.0是float型的,所以12346/100.0的结果是float型的(C语言默认规),float型都是输出6位小数的.

答案是123.4600
因为x*100+0.5等于12346.17;
在转换成整形就是:(int)(x*100+0.5)等于12346;
再除以100.0就是123.4600

printf("%f\n",(int)(x*100+0.5)/100.0);

看看这个在计算结果

在看看float
说给你听就等于害了自己去查错

123.4567*100=12345.67;
12345.67+0.5=12346.17;
强制转化为整型为12346;
12346/100=123.46