先给结论:核心差异
- ROUND(数值, 小数位数):四舍五入。第二参数指定保留几位小数,可正可负可为 0。
ROUND(3.14159,2)=3.14、ROUND(3.5,0)=4、ROUND(1234.5,-2)=1200。 - INT(数值):向下取整,结果永远是整数,没有第二参数。取"不大于它的最大整数":
INT(3.9)=3、INT(3.1)=3,不管小数多大一律舍掉。 - 负数时两者方向不同(最大区别):
INT(-3.2)=-4(朝更小的方向),而ROUND(-3.2,0)=-3(按绝对值四舍五入)。想"砍掉小数不管正负"用TRUNC(-3.2)=-3。
简单记忆:要保留小数或按四舍五入取整数用 ROUND;要给正数无条件舍掉小数用 INT;涉及负数取整,先想清楚要 -3 还是 -4,再决定用 INT 还是 TRUNC。
关于入口的说明:ROUND 在"公式 - 数学与三角函数"里,INT、TRUNC、ROUNDUP、ROUNDDOWN 同在一组。也可以直接在单元格里手写 =ROUND(。具体菜单位置以你软件的实际界面为准,版本不同按钮名可能略有差异。本文讲清逻辑,面板随版本微调即可。
什么是取整
"取整"就是把带小数的数变成整数或更少位的小数。Excel 提供了好几种规则,区别全在往哪个方向舍:
- 四舍五入:看要舍去部分的首位,≥5 进位、<5 舍去。最符合日常直觉,ROUND 用这个规则。
- 向下取整(朝负无穷):取不大于原数的最大整数。正数时是"舍掉小数",负数时会变得更小。INT 用这个规则。
- 向上取整(朝正无穷):取不小于原数的最小整数。ROUNDUP 用这个规则(正数进位、负数也朝 0 方向)。
- 截断(朝零):直接把小数部分砍掉,不管正负都朝 0 靠。TRUNC 用这个规则。
关键区别:正数的情况下 INT 和 TRUNC 结果一样(都是砍掉小数),所以很多人用了很久都没发现问题;一旦出现负数,两者结果就差 1,这正是最容易出错的地方。
同族函数对照表
| 函数 | 规则 | 典型结果 |
|---|---|---|
| ROUND(x,n) | 四舍五入,保留 n 位小数 | ROUND(3.14159,2)=3.14;ROUND(3.5,0)=4;ROUND(1234.5,-2)=1200 |
| INT(x) | 向下取整(朝负无穷),无第二参数 | INT(3.9)=3;INT(-3.2)=-4(注意!) |
| TRUNC(x,n) | 截断(朝零),可指定小数位 | TRUNC(3.9)=3;TRUNC(-3.2)=-3 |
| ROUNDUP(x,n) | 向上舍入(远离零) | ROUNDUP(3.1,0)=4;ROUNDUP(-3.1,0)=-4 |
| ROUNDDOWN(x,n) | 向下舍入(朝零) | ROUNDDOWN(3.9,0)=3;ROUNDDOWN(-3.9,0)=-3 |
关键:负数行为与语法
负数是最大的分水岭
做财务时这个差异很要命:如果某笔负数金额(如红字冲销、退款)用 INT 取整,会凭空多出 1 个单位的差额,报表因此对不平。
ROUND 的第二参数可以为负
别把 INT 当"四舍五入"或"去小数"用。正数的场景下 INT 看起来就是砍掉小数(INT(3.9)=3),用着没问题;一旦数据里出现负数,INT(-3.2) 会给出 -4,比原数小了 0.8。财务数据里负数很常见(红字、冲销、差额),用错就会算错钱。想"不管正负都直接砍掉小数",请用 TRUNC 或 ROUNDDOWN。
5 个最容易翻车的坑
- 坑 1 · INT 处理负数结果变小:以为
INT(-3.2)是 -3,实际是 -4。→ 要"砍小数"用 TRUNC;要按四舍五入用 ROUND。 - 坑 2 · 拿 INT 当四舍五入用:
INT(3.9)得 3 不是 4,因为它无条件舍。→ 要四舍五入用ROUND(x,0)。 - 坑 3 · 只改显示不改真实值:用"减少小数位数"按钮只是显示成 3.14,底层仍是 3.14159,后续计算仍按原值,求和可能对不平。→ 要真正改变数值必须用 ROUND 等函数,或"文件 - 选项 - 高级"里勾"将精度设为所显示的精度"(会永久丢失精度,慎用)。
- 坑 4 · 浮点误差导致结果反直觉:计算机二进制存储导致
ROUND(2.675,2)可能得 2.67 而非 2.68。→ 金额计算可先ROUND(x+0.0000001,2),或统一以"分"为单位存整数再除回。 - 坑 5 · 漏写第二参数:只写
ROUND(A1)会报错或提示参数不足。→ ROUND 必须带第二参数;如果本来就要取整,写ROUND(A1,0)。
常见问题
TRUNC 或 ROUNDDOWN,两者都是朝零方向处理:TRUNC(3.9)=3、TRUNC(-3.2)=-3。别用 INT——INT 是朝负无穷,负数时会多减 1。ROUND(x,2) 真正改值。财务对账场景建议用 ROUND,否则逐行显示两位、合计却对不上的情况很常见。ROUND(A1+0.0000001,2) 微调,或把金额以"分"为单位存成整数(如 267 分),最后再除以 100 显示,从根本上避开浮点问题。ROUND(1234.5,-1)=1230(精确到十位)、ROUND(1234.5,-2)=1200(精确到百位)、ROUND(1234.5,-3)=1000。做金额概算、把明细凑整到百元时很实用。