C 语言常用的函数(ceil-向上取整,floor-向下取整,round-四舍五入)

本文详细介绍了三种常用的数学函数:ceil(向上取整)、floor(向下取整)和round(四舍五入)。针对不同数据类型,如float、double和long double,这些函数如何工作并给出具体实例,帮助读者理解其使用场景和注意事项。

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

1.ceil函数(向上取整

extern float ceilf(float); //参数为flot类型

extern double ceil(double); //参数为double类型

extern long double ceill(long double); //参数为long double类型

举例:向上取整函数,ceil(11.1) = 12   ceil(11.9) = 12    ceilf((CGFloat)10/3) = 4  

注意:ceilf(-11.1) 结果为-11

2.floor函数(向下取整

extern float floorf(float);//参数为flot类型

extern double floor(double);//参数为double类型

extern long double floorl(long double);//参数为long double类型

举例:向上取整函数,floor(11.1) = 11   floor(11.9) = 11    floor((CGFloat)10/3) = 3  

注意:floor(-11.1) 结果为-12

3.round函数(四舍五入

extern float roundf(float);//参数为flot类型

extern double round(double);//参数为double类型

extern long double roundl(long double);//参数为long double类型

举例:向上取整函数,round(11.1) = 11   round(11.9) = 11    round((CGFloat)10/3) 结果为3  

注意:round(-11.1) = -11,    round(-11.5) = -12

 

 

在Python中,向上取整向下取整四舍五入是常见的数值处理操作,可以通过内置函数或数学模块实现。以下是具体方法和示例: --- ### **1. 向上取整Ceiling)** **方法**: - 使用 `math.ceil()` 函数,返回**大于或等于**输入值的最小整数。 **示例**: ```python import math print(math.ceil(3.2)) # 输出: 4 print(math.ceil(-1.7)) # 输出: -1(向正无穷方向取整) ``` --- ### **2. 向下取整Floor)** **方法**: - 使用 `math.floor()` 函数,返回**小于或等于**输入值的最大整数。 **示例**: ```python import math print(math.floor(3.8)) # 输出: 3 print(math.floor(-2.3)) # 输出: -3(向负无穷方向取整) ``` --- ### **3. 四舍五入Round)** **方法**: - 使用内置函数 `round()`,按**银行家舍入规则**处理: - 若小数部分 ≥ 0.5,向上取整;否则向下取整- 对 `.5` 的情况,取最近的偶数(如 `round(2.5)` 和 `round(3.5)` 分别返回 `2` 和 `4`)。 **示例**: ```python print(round(3.14159, 2)) # 输出: 3.14(保留2位小数) print(round(4.7)) # 输出: 5 print(round(2.5)) # 输出: 2(最近偶数) print(round(3.5)) # 输出: 4(最近偶数) ``` **注意**: - `round()` 的第二个参数指定保留小数位数(默认为 `0`)。 - 银行家舍入可能导致 `.5` 时结果不符合直观预期。 --- ### **4. 其他相关方法** #### **(1) 截断小数部分(向零取整)** - 使用 `int()` 直接截断小数部分: ```python print(int(3.9)) # 输出: 3 print(int(-2.7)) # 输出: -2 ``` #### **(2) 使用 `numpy` 库(扩展功能)** - 若需更多取整方式(如向远离零取整),可用 `numpy`: ```python import numpy as np print(np.ceil(3.2)) # 4.0 print(np.floor(-1.7)) # -2.0 print(np.round(2.5)) # 2.0(默认非银行家舍入) ``` --- ### **5. 方法对比总结** | 操作 | 函数/方法 | 示例输入 | 示例输出 | 特点 | |---------------|-------------------|----------|----------|--------------------------| | 向上取整 | `math.ceil()` | 3.2 | 4 | 向正无穷方向取整 | | 向下取整 | `math.floor()` | -1.7 | -2 | 向负无穷方向取整 | | 四舍五入 | `round()` | 2.5 | 2 | 银行家舍入(`.5` 取偶数)| | 截断取整 | `int()` | -2.7 | -2 | 直接丢弃小数部分 | --- ### **6. 常见问题** #### **(1) 为什么 `round(2.5)` 返回 `2`?** - Python 的 `round()` 采用银行家舍入规则,避免统计偏差。 #### **(2) 如何实现传统的四舍五入(`.5` 总是进位)?** - 自定义函数: ```python def round_traditional(x): return int(x + 0.5) if x >= 0 else int(x - 0.5) print(round_traditional(2.5)) # 输出: 3 ``` #### **(3) 负数取整的行为差异** - `math.floor(-1.7)` 返回 `-2`(向更小的整数),而 `int(-1.7)` 返回 `-1`(向零截断)。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值