C语言四舍五入计算方法(包含各种精度)

简介: C语言四舍五入计算方法(包含各种精度)

前言

当我们直接使用 / 号的时候,只能实现整除的操作,当有些题目要求四舍五入的功能的时候,如果没有见过可能会无从下手,下面会介绍四舍五入的具体方法及实现。

既然都是四舍五入操作,为什么要分位数来讲呢?因为虽然原理一样,可是因为要求精度的不同,我们需要的变量类型就不相同,这里有一些操作怕初学者分辨不来,所以就分开来一个一个的展示代码了。


一、精度到十位或十位以上的四舍五入

对于精度到十位数或十位数以上的四舍五入操作,我们需要用到的变量只有整形就够了,因为四舍五入操作需要根据所需精度的下一位进行四舍五入判断,所以个位数精度就需要转成别的类型,不在这个这一框里。

那具体是怎么实现四舍五入的呢?非常简单,比如现在我们要对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. }
相关文章
|
1月前
|
Java 编译器 C语言
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
22 3
|
5月前
|
存储 C语言
【C语言刷题每日一题#牛客网HJ73】——计算日期到天数转换(给定日期,计算是该年的第几天)
【C语言刷题每日一题#牛客网HJ73】——计算日期到天数转换(给定日期,计算是该年的第几天)
|
5月前
|
C语言
c语言左旋字符串问题(不同方法超详细解答)
c语言左旋字符串问题(不同方法超详细解答)
27 1
|
5月前
|
存储 安全 C语言
【C语言刷题每日一题】——求最大公约数(带数学计算过程详解)
【C语言刷题每日一题】——求最大公约数(带数学计算过程详解)
|
5月前
|
存储 C语言
【C语言刷题每日一题】——计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
【C语言刷题每日一题】——计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
|
5月前
|
机器学习/深度学习 算法 C语言
详细介绍递归算法在 C 语言中的应用,包括递归的基本概念、特点、实现方法以及实际应用案例
【6月更文挑战第15天】递归算法在C语言中是强大力量的体现,通过函数调用自身解决复杂问题。递归涉及基本概念如自调用、终止条件及栈空间管理。在C中实现递归需定义递归函数,分解问题并设定停止条件。阶乘和斐波那契数列是经典应用示例,展示了递归的优雅与效率。然而,递归可能导致栈溢出,需注意优化。学习递归深化了对“分而治之”策略的理解。**
108 7
|
5月前
|
C语言
C语言---试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?
C语言---试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?
|
5月前
|
存储 C语言
C语言学习记录——联合体(共用体、特点、用法、联合体大小计算)
C语言学习记录——联合体(共用体、特点、用法、联合体大小计算)
77 2
|
5月前
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
45 1
|
5月前
|
IDE 编译器 开发工具
详细解读C语言程序设计:现代方法(第2版)第二章全部习题答案
详细解读C语言程序设计:现代方法(第2版)第二章全部习题答案
40 0