round、floor、ceil、trunc的对比

本文详细解析了round(四舍五入)、floor(向下取整)、ceil(向上取整)及trunc(截断)等数学函数的功能与使用方法,并通过实例展示了它们在不同数值情况下的运算结果。
结论先行:round为四舍五入,floor为最近的较小整数,ceil为最近较大整数,trunk为小数为正时为最近较小整数,为负时为最近较大整数。
示例如下:
#include <stdio.h>      
#include <math.h>       
int main ()
{
  const char * format = "%.1f \t%.1f \t%.1f \t%.1f \t%.1f\n";
  printf ("value\tround\tfloor\tceil\ttrunc\n");
  printf ("-----\t-----\t-----\t----\t-----\n");
  printf (format, 2.3,round( 2.3),floor( 2.3),ceil( 2.3),trunc( 2.3));
  printf (format, 3.8,round( 3.8),floor( 3.8),ceil( 3.8),trunc( 3.8));
  printf (format, 5.5,round( 5.5),floor( 5.5),ceil( 5.5),trunc( 5.5));
  printf (format,-2.3,round(-2.3),floor(-2.3),ceil(-2.3),trunc(-2.3));
  printf (format,-3.8,round(-3.8),floor(-3.8),ceil(-3.8),trunc(-3.8));
  printf (format,-5.5,round(-5.5),floor(-5.5),ceil(-5.5),trunc(-5.5));
  return 0;
}
输出:
value   round   floor   ceil    trunc
-----   -----   -----   ----    -----
2.3     2.0     2.0     3.0     2.0
3.8     4.0     3.0     4.0     3.0
5.5     6.0     5.0     6.0     5.0
-2.3    -2.0    -3.0    -2.0    -2.0
-3.8    -4.0    -4.0    -3.0    -3.0
-5.5    -6.0    -6.0    -5.0    -5.0
### C++ 中 `ceil`、`floor` 和 `round` 的用法与区别 #### 定义与功能 - **`ceil(x)`**: 返回不小于 `x` 的最小整数值,即向上取整[^1]。 - **`floor(x)`**: 返回不大于 `x` 的最大整数值,即向下取整[^1]。 - **`round(x)`**: 返回最接近 `x` 的整数。如果 `x` 到两个相邻整数的距离相等,则返回离零更远的那个整数(四舍五入到最近的偶数)[^1]。 #### 参数类型支持 这些函数均支持多种数据类型的参数输入,包括但不限于 `double`, `float`, 和 `long double`。对于每种类型,都有对应的重载版本以确保精度匹配[^1]。 ```cpp #include <cmath> // 包含 math 库头文件 // 示例调用 double resultCeil = ceil(3.2); // 结果为 4.0 double resultFloor = floor(3.7); // 结果为 3.0 double resultRound = round(2.5); // 结果为 2.0 (注意:2.5 被视为靠近 2) ``` #### 实际应用对比 通过下面的例子可以清晰看到三者之间的差异: | value | round | floor | ceil | trunc | |-------|-------|-------|------|-------| | 2.3 | 2 | 2 | 3 | 2 | | 3.8 | 4 | 3 | 4 | 3 | | 5.5 | 6 | 5 | 6 | 5 | | -2.3 | -2 | -3 | -2 | -2 | | -3.8 | -4 | -4 | -3 | -3 | | -5.5 | -6 | -6 | -5 | -5 | 上述表格展示了不同浮点值经过各函数处理后的结果[^1]。 #### 特殊情况说明 当遇到负数时: - `ceil(-2.3)` 将会得到 `-2`,因为这是大于等于 `-2.3` 的最小整数; - `floor(-2.3)` 得到的是 `-3`,因为它寻找的是不超过该值的最大整数; - 对于 `round(-2.5)` 来说,由于遵循向最近偶数靠拢原则,在这种情况下它同样给出 `-2`. #### 总结 综上所述,虽然这三个函数都用于实现某种形式上的取整操作,但它们各自有着严格定义的行为模式以及适用场景的选择依据[^1]. 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值