回 帖 发 新 帖 刷新版面

主题:C++考试题3

从键盘输入任意浮点数,对此数进行四舍五入处理,小数后仅仅保留4位,例如x=3.1415926则经过处理后,x=3.1416。在格式输出时,小数后也输出4位。

回复列表 (共5个回复)

沙发

void main()
{float zhu;
scanf("%f",&zhu);
zhu=(float)(int)(zhu*10000)/10000;printf("%8.4f",zhu);}

板凳

别想了,两条都无法做到
小数后仅仅保留4位 --- 因为浮点数无法精确表示所有4位小数的数,所以做不到
在格式输出时,小数后也输出4位 --- 输出多少位数和格式字符串相关,仅仅数值本身是做不到的

3 楼

[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 楼

从考题的语法实现的角度来说,沙发正确。从底层原理角度来说,2楼是真理,考题是在自欺欺人

5 楼


好思想!

我来回复

您尚未登录,请登录后再回复。点此登录或注册