四舍五入(C语言实现)

本文介绍了两种在C语言中实现四舍五入的方法。方法一是利用取整规则,通过加0.5实现正数的四舍五入,并通过扩大和缩小数值来保留指定小数位。方法二是使用库函数`round`,需要包含`<math.h>`头文件。文章还探讨了负数四舍五入的处理,并提供了相应代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言中的四舍五入

我们知道,C语言直接取整是不能实现四舍五入的,我们需要靠自己的方法实现四舍五入。而且有不少题目会在浮点数的输出中要求我们四舍五入。所以学会用C语言实现四舍五入还是很有必要的。本篇文章我们介绍两种方法。

方法一:利用取整规则(不使用库函数)

先从简单的开始,比如我们现在需要将一些小数进行四舍五入并输出,比如3.5, 3.4, 3.7。请看代码:

#include <stdio.h>
int main()
{
	float arr[3] = { 3.5, 3.4, 3.7 };
	printf("将arr内容四舍五入后:\n");
	for (int i = 0; i < 3; i++)
	{
		printf("%d\n", (int)(arr[i] + 0.5));
	}
}

程序运行结果:
在这里插入图片描述

所以我们可以得到一个公式,将一位小数四舍五入的方法:(int)(浮点数+0.5);

那我们如何实现将3.1415这种浮点数进行四舍五入呢? 比如现在要求我们保留三位小数输出。
这里我们采用的方法是:先将3.1415扩大1000倍,变成3141.5,进行四舍五入后,变成3142,再缩小1000倍变成3.142。 请看代码:

#include <stdio.h>
int main()
{
	float num = 3.1415;
	num = (int)(num * 1000 + 0.5) / 1000.0;
	printf("%.3f", num);
}

程序运行结果:
在这里插入图片描述
其中特别注意的是num = (int)(num * 1000 + 0.5) / 1000.0;这里是除以1000.0,只有浮点数运算,才能使结果为浮点数。

方法二:使用库函数

C语言提供了一个四舍五入的库函数,round函数。我们去官网看看它的介绍吧!
在这里插入图片描述
我们其实只需要了解三个内容:1.库函数需要引用<math.h>头文件;2.传入参数为浮点数类型;3.返回一个整数。
就行了我们试着使用一下吧。比如我们需要将3.14159保留四位小数输出,需要四舍五入。请看代码:

#include <stdio.h>
#include <math.h>
int main()
{
	float num = 3.14159;
	num = round(num * 10000) / 10000.0;
	printf("%.4f", num);
}

程序运行结果:
在这里插入图片描述

总结

看到这里,我想你应该学会了如何用C语言实现四舍五入了吧?那我提一个小问题吧:第一种方法,如果是负数的话该如何进行四舍五入呢?可以在评论区告诉我哟。答案我会公布在动态。如果本篇博客有什么问题的话请大佬提出,我一定会积极改正!
顺便预告一下下一期的博客吧,下一期博客我会讲解一下C语言递归的一个经典问题:汉诺塔。
在这里插入图片描述

03-23
### 舍入的概念 舍入是一种数学处理方式,用于简化数值表示或将数值调整到指定精度范围内的近似值。常见的舍入方法包括四舍五入、向上取整、向下取整以及银行家舍入法等。 #### 常见的舍入方法 1. **四舍五入** 这是最常用的舍入方法之一,它通过判断目标位之后的一位数字来决定是否进位。如果该位小于5,则舍弃;大于等于5则向前进一位[^1]。然而需要注意的是,在某些情况下,由于计算机内部存储浮点数的方式可能导致微小误差,从而影响最终结果[^5]。 2. **向上取整 (Ceiling)** 不论小数部分是多少,一律将数值提升至下一个更高的整数。例如 `Math.Ceiling(3.1)` 的结果为 4。 3. **向下取整 (Floor)** 将任何带有小数的部分去掉,仅保留整数部分而不做进一步处理。比如调用 `Math.Floor(-3.9)` 返回 -4。 4. **截断 (Truncate)** 类似于向下取整,不过对于正负数均只移除小数点后的成分而不会改变符号方向。这意味着无论是正值还是负值都会趋向零的方向被裁剪掉多余的小数片段。 5. **银行家舍入 (Banker's Rounding 或 Round Half To Even)** 此种算法规定当待定位置后面的数值正好处于中间状态(即 .5),那么应优先考虑使最后的结果成为偶数形式。举例来说,`Round(2.5)=2`, 同样地也有 `Round(3.5)=4`[^2]。 #### 实现示例 以下是几种编程语言实现上述不同类型的舍入功能的例子: ##### C# ```csharp // 四舍五入 double value = Math.Round(12.345, 2); // 输出: 12.35 // 向上取整 int ceilValue = (int)Math.Ceiling(value); // 向下取整 int floorValue = (int)Math.Floor(value); ``` ##### JavaScript ```javascript let num = 7.2; console.log(Math.round(num)); // Standard rounding to nearest integer. console.log(Math.ceil(num)); // Always rounds up regardless of decimal part. console.log(Math.floor(num)); // Always rounds down no matter what follows the dot. ``` ##### Excel Formula Usage Example For applying ROUND function within an excel sheet cell: `=ROUND(A1,B1)` Where A1 contains original number needing adjustment and B1 specifies desired level after comma. ### 注意事项 尽管大多数时候人们习惯运用简单的“逢五必升”的原则来做日常估算工作,但在科学领域或者金融交易等领域里更倾向于采纳更加严谨精确的标准——也就是所谓的“bankers' rule”。这是因为长期累积下来可能会造成不可忽视的整体偏差现象的发生[^3][^4].
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值