前言
当我们直接使用 / 号的时候,只能实现整除的操作,当有些题目要求四舍五入的功能的时候,如果没有见过可能会无从下手,下面会介绍四舍五入的具体方法及实现。
既然都是四舍五入操作,为什么要分位数来讲呢?因为虽然原理一样,可是因为要求精度的不同,我们需要的变量类型就不相同,这里有一些操作怕初学者分辨不来,所以就分开来一个一个的展示代码了。
一、精度到十位或十位以上的四舍五入
对于精度到十位数或十位数以上的四舍五入操作,我们需要用到的变量只有整形就够了,因为四舍五入操作需要根据所需精度的下一位进行四舍五入判断,所以个位数精度就需要转成别的类型,不在这个这一框里。
那具体是怎么实现四舍五入的呢?非常简单,比如现在我们要对200/3进行一个精度在十位数的四舍五入操作,直接整除答案为60,而我们需要的答案是70。我们需要得到所需精度下一位的整除结果,即200/3=66,这时候我们再将((所需精度的下一位+5)/10)*10,为什么这么操作呢?我们这时候只要把65带进去,我们就可以发现已经实现了精度到十位数的四舍五入!代码如下。
1. #include <stdio.h> 2. #include <stdlib.h> 3. 4. int main() 5. { 6. int a = 200; 7. int t = ((a / 3 + 5) /10 )* 10; 8. printf("%d", t); 9. system("pause"); 10. return 0; 11. }
二、精度在小数点后的四舍五入
大部分操作是与上述一样的,只需把需要数据类型换成float即可,精度为小数点后两位代码如下。
1. #include <stdio.h> 2. #include <stdlib.h> 3. 4. int main() 5. { 6. float a = 200; 7. float t = ((a / 3 + 0.005) /10 )* 10; 8. printf("%.2f", t); 9. system("pause"); 10. return 0; 11. }
这里的输出格式%.2f其实会自动帮我们四舍五入,但这里以讲解原理为主大家知道就行。
三、精度到个位数的四舍五入
这个为什么要单独拎出来讲呢,大部分原理也是相同的,特殊的地方是,在他进行四舍五入的计算时需要用到浮点型去存储小数点后一位的数据,但最后需要得到的类型是整形的,所以我们需要在运算过程中做一个强制类型转化的操作。代码如下。
1. #include <stdio.h> 2. #include <stdlib.h> 3. 4. int main() 5. { 6. int a = 200; 7. int t = (int)((float)a / 2 + 0.5); 8. printf("%d", t); 9. system("pause"); 10. return 0; 11. }