关于c语言中如何四舍五入(圆整)的问题!
在c语言中,用70.0/6得到的值赋给一个浮点变量,只会得到11.666667(因为浮点型只留下小数点后六位),而如果我们想输出结果的约数,必须要对结果进行四舍五入.
一般来说,在c语言中,如果想要对一个结果进行四舍五入,我们通常会先将需要圆整的位数进行整数化,
即乘以相应的倍数,然后再用其对10对模,然后对结果与5的大小进行判断,判断是否需要加上相应的
1,0.1,0.01等等
下面给出对实型数进行整数圆整的代码,比如2.7->3,2.3->2
/*将一个浮点数圆整为整数*/double a;//a为一个浮点数
int temp;//作为一个临时变量
scanf("%lf", &a);
temp = a * 10;/*通过判断小数点后一位来判断是否需要+1*/if (temp % 10<5){printf("%d", (int)a);}else{printf("%d", (int)a + 1);}return 0;
但是如果是浮点数,c语言具有直接对需求小数位数取整的功能
如果你想对小数点后一位四舍五入,则可以在printf()中使用格式控制符%.1f,同样的,如果想对小数点后两位进行圆整,则可以使用%.2f.
printf("%.1f",11.0/20);
将可以得到0.6
所以在解决浮点数的圆整问题时,不必要再用第一种方法进行判断,若进行判断(在你使用%.nf格式控制符的情况下),则会出错,得不到自己想要的答案,因为系统已经进行圆整过了,再进行判断则会导致错误判断.