=ROUND(A2,2) 把 A2 中的数字四舍五入到两位小数,所以 3.14159 变成 3.14。第二个参数是要保留的位数:0 舍入到整数,-1 舍入到最接近的十位。
| A | B | C | |
|---|---|---|---|
| 1 | Value | 2 decimals | Whole number |
| 2 | 3.14159 | 3.14 | 3 |
| 3 | 2.675 | 2.68 | 3 |
| 4 | 12.5 | 12.5 | 13 |
| 5 | -2.5 | -2.5 | -3 |
| 6 | 1234.567 | 1234.57 | 1235 |
每一行都对 A 列的值运行两个公式,所以 1234.567 变成 1234.57 和 1235。把 A2 改成另一个数字,两列都会跟着变化。
ROUND 语法
=ROUND(number, num_digits)
number是要舍入的值:一个数字、一个单元格,或像=ROUND(B2*C2,2)这样的整个公式。num_digits指定舍入的位置。正数表示小数点后的位数,0舍入到整数,负数表示小数点前的位数。
ROUND 只看被舍去的第一位数字。如果这一位是 5 或更大,保留部分就进一;否则保持不变。所以 =ROUND(2.675,2) 得到 2.68,=ROUND(2.674,2) 得到 2.67。
舍入到十位、百位或千位
num_digits 为负数时,在小数点左侧舍入。用这种方法可以把报表中的 1234.567 变成 1230、1200 或 1000。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | num_digits | Result | Number | |
| 2 | 2 | 1234.57 | 1234.567 | |
| 3 | 1 | 1234.6 | ||
| 4 | 0 | 1235 | ||
| 5 | -1 | 1230 | ||
| 6 | -2 | 1200 | ||
| 7 | -3 | 1000 |
点击 B5:它是 =ROUND($D$2,-1),即舍入到十位。现在把 D2 改成 48750。-2 那一行显示 48800,因为被舍去的第一位是 5 时总会进一。
ROUND 与数字格式
把单元格格式设置为 0.00(开始 > 数字 > 减少小数位数)只改变单元格显示的内容。完整的值仍然在那里,读取这个单元格的每个公式用的都是完整值。ROUND 则改变值本身。
这种差别会体现在合计中。下面 A 列中的每个价格都是 1.333,显示为两位小数,所以这一列看起来是 1.33、1.33、1.33,合计却显示 4.00。B 列先对每个价格做了舍入,合计是 3.99。
| A | B | |
|---|---|---|
| 1 | Formatted only | Rounded |
| 2 | 1.33 | 1.33 |
| 3 | 1.33 | 1.33 |
| 4 | 1.33 | 1.33 |
| 5 | 4.00 | 3.99 |
两个合计都没有错:4.00 是真实的和 3.999 以两位小数显示的结果,3.99 则是发票上打印出来的数字之和。当舍入后的数字才是真正的数字时(比如每一行实际收取的金额),用 ROUND。如果只想少显示几位小数而不改变任何值,用数字格式。文件 > 选项 > 高级 > “将精度设为所显示的精度”会让 Excel 在整个工作簿中按显示值存储每个值,并且无法撤销;ROUND 是更安全的选择。
Excel 如何舍入 0.5
ROUND 把 5 向远离零的方向舍入:2.5 变成 3,-2.5 变成 -3。看第一个表格的第 3 至 5 行:2.675 得到 2.68,12.5 得到 13,-2.5 得到 -3。
有些工具会把 5 舍入到最接近的偶数(银行家舍入法),于是 2.5 变成 2。Excel 的 ROUND 函数从不这样做,但 VBA 的 Round 函数会,这就解释了为什么宏和单元格的结果会不一致。Google Sheets 的 ROUND 也是向远离零的方向舍入。
对公式结果做舍入
把整个计算放进 ROUND,这样只对最终结果舍入。这里把含 8.25% 税的价格舍入到分。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Item | Price | Tax rate | With tax |
| 2 | Lamp | $19.99 | 8.25% | $21.64 |
| 3 | Chair | $74.50 | 8.25% | $80.65 |
| 4 | Desk | $129.00 | 8.25% | $139.64 |
同样的写法适用于平均值、百分比和除法:=ROUND(AVERAGE(B2:B6),1) 得到保留一位小数的平均值。如果想把舍入后的数字作为文本放进一句话中,=TEXT(A2,"0.00") 可以一步完成(见 TEXT 函数)。
用 MROUND 舍入到最接近的 5、0.05 或 15 分钟
=MROUND(number, multiple) 舍入到任意数的最接近倍数。它适用于按 5 分一档的价格、按 12 个一包的数量,或按刻钟计算的时间。
| A | B | C | |
|---|---|---|---|
| 1 | Value | Multiple | MROUND |
| 2 | 12 | 5 | 10 |
| 3 | 13 | 5 | 15 |
| 4 | 2.37 | 0.05 | 2.35 |
| 5 | 9:08 | 0:15 | 9:15 |
MROUND 也会把正好居中的值向远离零的方向舍入,所以 12.5 按 5 的倍数得到 15。数字和倍数的符号必须相同:=MROUND(-12,5) 返回 #NUM!,而 =MROUND(-12,-5) 得到 -10。如果要始终向上或向下舍入到倍数,请看 ROUNDUP 与 ROUNDDOWN 一文中的 CEILING 和 FLOOR。
动手试试:对平均值做舍入
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Student | Score | Average | ||
| 2 | Ana | 78 | |||
| 3 | Ben | 91 | |||
| 4 | Cleo | 85 | |||
| 5 | Dan | 66 | |||
| 6 | Eve | 88 | |||
| 7 | Finn | 73 |
轮到你了: 在 E2 中显示 B2:B7 中分数的平均值,舍入到一位小数。
提示:把 AVERAGE 放进 ROUND,位数用 1。
该用哪个舍入函数
| 你想要 | 公式 | 12.345 得到 |
|---|---|---|
| 最接近的值,两位小数 | =ROUND(A2,2) | 12.35 |
| 最接近的整数 | =ROUND(A2,0) | 12 |
| 最接近的十位 | =ROUND(A2,-1) | 10 |
| 始终向上 | =ROUNDUP(A2,1) | 12.4 |
| 始终向下 | =ROUNDDOWN(A2,1) | 12.3 |
| 最接近的 0.5 的倍数 | =MROUND(A2,0.5) | 12.5 |
| 去掉小数 | =TRUNC(A2) 或 =INT(A2) | 12 |
一个常见错误是在长计算的中途舍入一次、最后又舍入一次,这可能让最后一位数字发生变化。只舍入一次,放在你真正要汇报或收费的那一步。
常见问题
Excel 中如何保留两位小数?
用 =ROUND(A2,2)。它会改变存储的值,所以 3.14159 变成 3.14,后续公式使用的也是 3.14。把单元格格式设置为 0.00 只改变显示效果,底层仍是完整的值。
Excel 中如何四舍五入到整数?
用 =ROUND(A2,0):12.5 变成 13,12.4 变成 12。如果要始终向上或始终向下舍入,用 =ROUNDUP(A2,0) 或 =ROUNDDOWN(A2,0)。
Excel 中如何四舍五入到十位、百位或千位?
给 ROUND 一个负的位数:=ROUND(A2,-1) 舍入到十位,=ROUND(A2,-2) 舍入到百位,=ROUND(A2,-3) 舍入到千位。1234.567 分别变成 1230、1200 和 1000。
Excel 中 0.5 是向上还是向下舍入?
ROUND 把 5 向远离零的方向舍入:=ROUND(2.5,0) 是 3,=ROUND(-2.5,0) 是 -3。它不使用银行家舍入法(四舍六入五成双),而 VBA 的 Round 函数用的是这种方法。
Excel 中如何舍入到最接近的 5?
用 =MROUND(A2,5):12 变成 10,13 变成 15。MROUND 可以舍入到任意倍数,例如 =MROUND(A2,0.05) 把价格按 5 分一档舍入。