主题:C++考试题3
dt_hanmh
[专家分:0] 发布于 2010-07-08 13:16:00
从键盘输入任意浮点数,对此数进行四舍五入处理,小数后仅仅保留4位,例如x=3.1415926则经过处理后,x=3.1416。在格式输出时,小数后也输出4位。
回复列表 (共5个回复)
沙发
jsyc_dt01 [专家分:200] 发布于 2010-07-08 13:32:00
void main()
{float zhu;
scanf("%f",&zhu);
zhu=(float)(int)(zhu*10000)/10000;printf("%8.4f",zhu);}
板凳
bruceteen [专家分:42660] 发布于 2010-07-08 17:30:00
别想了,两条都无法做到
小数后仅仅保留4位 --- 因为浮点数无法精确表示所有4位小数的数,所以做不到
在格式输出时,小数后也输出4位 --- 输出多少位数和格式字符串相关,仅仅数值本身是做不到的
3 楼
alweeq86 [专家分:1170] 发布于 2010-07-08 18:49:00
[quote]void main()
{float zhu;
scanf("%f",&zhu);
zhu=(float)(int)(zhu*10000)/10000;printf("%8.4f",zhu);}[/quote]
zhu=(float)(int)(zhu*10000)/10000;这句没4舍5入
应该是
zhu=(float)(int)(zhu*10000+0.5)/10000;
4 楼
雪光风剑 [专家分:27190] 发布于 2010-07-08 20:25:00
从考题的语法实现的角度来说,沙发正确。从底层原理角度来说,2楼是真理,考题是在自欺欺人
我来回复