=ROUNDUP(A2,0) 总是向远离零的方向舍入,所以 2.1 变成 3。=ROUNDDOWN(A2,0) 总是向零的方向舍入,所以 2.9 变成 2。两者的参数和 ROUND 相同:先是数字,然后是要保留的位数。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Value | ROUNDUP | ROUNDDOWN | ROUND |
| 2 | 2.1 | 3 | 2 | 2 |
| 3 | 2.9 | 3 | 2 | 3 |
| 4 | 2.5 | 3 | 2 | 3 |
| 5 | -2.1 | -3 | -2 | -2 |
| 6 | -2.9 | -3 | -2 | -3 |
看第 5 行和第 6 行:ROUNDUP 把 -2.1 变成 -3,因为“向上”指的是远离零,而不是变成更大的数。ROUNDDOWN 把 -2.9 变成 -2。把 A2 改成 2.0001,ROUNDUP 仍然得到 3:保留位之后只要有数,就会进一。
ROUNDUP 与 ROUNDDOWN 语法
=ROUNDUP(number, num_digits)
=ROUNDDOWN(number, num_digits)
num_digits 的用法和 ROUND 完全相同:2 保留两位小数,0 得到整数,-1、-2、-3 分别舍入到十位、百位和千位。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | num_digits | ROUNDUP | ROUNDDOWN | Number | |
| 2 | 2 | 1234.57 | 1234.56 | 1234.561 | |
| 3 | 1 | 1234.6 | 1234.5 | ||
| 4 | 0 | 1235 | 1234 | ||
| 5 | -2 | 1300 | 1200 |
位数为 2 时,ROUNDUP 把 1234.561 变成 1234.57;位数为 -2 时变成 1300。ROUNDDOWN 位数为 -2 时得到 1200。改一下 E2,看看两列如何变化。
除法结果向上取整:需要多少箱、多少辆车、多少页
向上舍入最常见的原因是计数不能有小数。250 件物品,每箱装 24 件,需要 10.4 箱,也就是 11 箱。=ROUNDUP(B2/C2,0) 直接给出这个结果。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Order | Items | Per box | Boxes |
| 2 | A-101 | 250 | 24 | 11 |
| 3 | A-102 | 96 | 24 | 4 |
| 4 | A-103 | 97 | 24 | 5 |
96 件正好装满 4 箱,再多一件就需要第 5 箱。对于 97 件,ROUND 会给出 4,留下一件没有箱子装。
CEILING 和 FLOOR:舍入到倍数
ROUNDUP 和 ROUNDDOWN 按 10 的幂舍入。要向上或向下舍入到任意数(5、0.25、12、半小时)的倍数,用 CEILING 和 FLOOR:
=CEILING(A2,5)向上舍入到下一个 5 的倍数。=FLOOR(A2,5)向下舍入到上一个 5 的倍数。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Value | Multiple | CEILING | FLOOR |
| 2 | 11 | 5 | 15 | 10 |
| 3 | 15 | 5 | 15 | 15 |
| 4 | 7.3 | 0.25 | 7.5 | 7.25 |
| 5 | 26 | 12 | 36 | 24 |
本身已经是倍数的值保持不变:15 按 5 的倍数,无论向上还是向下都得到 15。
CEILING.MATH 和 FLOOR.MATH(Excel 2013 及更高版本)效果相同,只有一个区别:倍数是可选的,默认为 1;对于负数,第三个参数决定舍入方向。=CEILING.MATH(-7.5) 得到 -7(向上,朝向零),=CEILING.MATH(-7.5,1,1) 得到 -8(远离零)。在当前版本的 Excel 中,普通的 CEILING 和 FLOOR 用于负数和正倍数时也是这样;在 Excel 2007 中它们会返回 #NUM!。
把时间向上舍入到下一个 15 分钟
时间是一天的几分之几,所以 CEILING 和 FLOOR 也能对时间舍入。把倍数写成时间:TIME(0,15,0) 就是 15 分钟。
| A | B | C | |
|---|---|---|---|
| 1 | Logged | Billed (up) | Paid (down) |
| 2 | 1:07 | 1:15 | 1:00 |
| 3 | 0:52 | 1:00 | 0:45 |
| 4 | 2:30 | 2:30 | 2:30 |
| 5 | 0:01 | 0:15 | 0:00 |
1:07 按 1:15 计费,哪怕只有一分钟,也按整整一刻钟计费。2:30 本来就是倍数,仍是 2:30。时间运算的更多内容请看时间计算。
负数时 INT 与 TRUNC 的区别
两者都会去掉正数的小数:=INT(4.7) 和 =TRUNC(4.7) 都得到 4。遇到负数时就不同了。INT 向下舍入到更小的整数,所以 -4.2 变成 -5。TRUNC 直接截去小数,所以 -4.2 变成 -4,和 ROUNDDOWN 一样。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Value | INT | TRUNC | ROUNDDOWN |
| 2 | 4.7 | 4 | 4 | 4 |
| 3 | 4.2 | 4 | 4 | 4 |
| 4 | -4.2 | -5 | -4 | -4 |
| 5 | -4.7 | -5 | -4 | -4 |
TRUNC 也可以指定位数:=TRUNC(A2,2) 保留两位小数并截去其余部分。当你要的是“小于或等于它的整数”时用 INT,例如日期时间值中的整天数;当你要的是“小数点前的数字”时用 TRUNC。
动手试试:托盘数和价格档位
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Shipment | Cartons | Per pallet | Pallets |
| 2 | S1 | 130 | 40 |
轮到你了: 在 D2 中计算 S1 这批货需要多少个托盘:B2 中的箱数除以 C2 中每个托盘的箱数,向上取整为整托盘。
| A | B | C | |
|---|---|---|---|
| 1 | Price | Step | Rounded up |
| 2 | 3.62 | 0.25 |
轮到你了: 在 C2 中把 A2 中的价格向上舍入到 B2 中档位的下一个倍数。
该用哪一个
| 你想要 | 公式 | 7.32 得到 | -7.32 得到 |
|---|---|---|---|
| 向上,1 位小数 | =ROUNDUP(A2,1) | 7.4 | -7.4 |
| 向下,1 位小数 | =ROUNDDOWN(A2,1) | 7.3 | -7.3 |
| 向上到 0.5 的倍数 | =CEILING.MATH(A2,0.5) | 7.5 | -7 |
| 向下到 0.5 的倍数 | =FLOOR.MATH(A2,0.5) | 7 | -7.5 |
| 更小的整数 | =INT(A2) | 7 | -8 |
| 去掉小数 | =TRUNC(A2) | 7 | -7 |
要避免的错误:本想“四舍五入到最接近的值”却用了 ROUNDUP。对 3.01 小时用 =ROUNDUP(B2,0) 会按 4 小时计费。如果规则是“最接近”,用 ROUND;如果是“下一个刻钟”,用带档位的 CEILING。
常见问题
Excel 中如何始终向上舍入?
取整数用 =ROUNDUP(A2,0),保留两位小数用 =ROUNDUP(A2,2)。只要保留位之后还有数,就会进一,所以位数为 0 时 2.01 变成 3。
ROUNDUP 和 CEILING 有什么区别?
ROUNDUP 按位数计算:=ROUNDUP(A2,-1) 向上舍入到下一个十位。CEILING 向上舍入到任意数的下一个倍数:=CEILING(A2,5) 向上舍入到下一个 5 的倍数,=CEILING(A2,0.25) 向上舍入到下一个 0.25 的倍数。
Excel 中 INT 和 TRUNC 有什么区别?
对正数结果相同,对负数则不同。=INT(-4.2) 向下舍入到更小的整数 -5,而 =TRUNC(-4.2) 直接截去小数,得到 -4。
Excel 中如何去掉小数而不四舍五入?
用 =TRUNC(A2) 或 =ROUNDDOWN(A2,0):7.99 变成 7。要保留两位小数并截去其余部分,用 =TRUNC(A2,2),于是 7.999 变成 7.99。
Excel 中如何向上舍入到最接近的 5 的倍数?
用 =CEILING(A2,5)(或 =CEILING.MATH(A2,5)):11 变成 15,15 仍是 15。要向下舍入到 5 的倍数,用 =FLOOR(A2,5)。