关于double的输出格式问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 03:24:52
int main()
double a,b,c;
cout<<setprecision(4)<<showpoint;
a=(4*12)/5;
b=double(4*(12/5));
c=(4*(double(12)/5));
cout<<a,b,c;
cin get();
cin get();
return 0;
}
最后得出结果是 9.000 8.000 9.600
这是为什么?
另外还有前面一个cout后面的 showpoint究竟是什么作用?

(1)在+ - * /的运算中,如果前后两个数字都为整型数字,则计算结果也为整型数字。如a=(4*12)/5的计算和赋值过程是:
1)4*12=48;
2)48/5=9,自动消除小数部分;
3)a为double型,所以9赋值给a时转换为9.000。
又如b=double(4*(12/5));的计算过程:
1)12/5=2;
2)4*2=8;
3)double(8)=8.000;
4)8.000赋值给b,结果b=8.000
(2)在+ - * /的运算中,如果前后两个数字中包含一个或者两个浮点型或双精度型数字,则计算结果为浮点型活双精度型数字。如c=(4*(double(12)/5));的计算过程:
1)double(12)=12.00,/*这里是2或者3个0,我不肯定,你可以在单独输出double(12),看一下结果。*/
2)12.00/5=2.400;
3)4*2.400=9.600;
4)9.600赋值给c,结果c=9.600

cout<<setsprecision(4)意思是输出4位数,所以是
9.000.showpint是没作用的.