1. 概述
1.1 应用场景
在制作报表时,某数据列如收入金额是数字类型,其中数据包含小数,且小数位数不超过 2 位,对该列进行求和(使用公式 sum)等处理时,会发现最终的结果如:123456.409999996,即小数位数超过 2 位。
此时您可能会有疑问,为什么小数位数不是 2 位?若您的报表对有效位数比较敏感,如金额汇总,总金额最多精确到分,即小数位数最多 2 位,该怎么办?
1.2 功能简介
此情况时,可使用 round() 函数对计算后的结果按指定位数四舍五入来解决。
1.3 视频教程
2. 示例
2.1 函数说明
2.1.1 概述
语法 | ROUND(number,num_digits, boolean) | 返回某个数字按指定位数舍入后的数字。 |
---|---|---|
参数1 | number | 需要进行舍入的数字 |
参数2 | num_digits | 指定的位数,按此位数进行舍入。 如果 num_digits 大于 0,则舍入到指定的小数位。 如果 num_digits 等于 0,则舍入到最接近的整数。 如果 num_digits 小于 0,则在小数点左侧进行舍入。 |
参数3 | boolean | 因浮点数存在精度计算丢失问题,导致计算结果里可能带上 9999、0000 这些,因此加入第三个参数来控制是否需要去除 9999、0000。 false 表示需要过滤 9999、0000 这些数据;true 表示保留,参数为空则默认为 false。 |
2.1.2 注意事项
2020-07-08 及之后版本的 JAR 包才会有第三个参数。
2020-07-08 及之后版本的 JAR 包 number 参数支持字符串。
2.1.3 示例
公式 | 结果 |
---|---|
ROUND(2.15, 1) | 2.2 |
ROUND(2.149, 1) | 2.1 |
ROUND(-1.475, 2) | -1.48 |
ROUND(21.5, -1) | 20 |
ROUND(1.99999999, 8) | 2 |
ROUND(1.99999999, 8, true) | 1.99999999 |
2.2 操作步骤
报表中的销量列求和,设计如下:
如上对收入 sum 求和后精度变大了。
遇到这样的情况时,可使用 round 函数对求和结果按 2 位小数位四舍五入,即 B5 单元格中的使用方法。