df-drills pandas · Polars · DuckDB SQL · DuckDB Relational 题目列表 登录

四舍五入与整除

简单 06-cast 类型转换 roundinteger-divisionnumeric

对每张账单计算两个值:

  1. amount_r:把 amount 保留两位小数,采用四舍五入,且 .5 一律远离零进位。例如 0.125 → 0.13、0.625 → 0.63、-1.125 → -1.13、1.234 → 1.23。注意:这不是“银行家舍入”(.5 时取偶数),0.125 不能得到 0.12。
  2. per_head:total 除以 n 后向下取整(取不大于商的最大整数),结果是整数。例如 7 / 2 → 3、-7 / 2 → -4(不是 -3)。

数据保证:n ≥ 1;amount 中恰好落在“第三位小数是 5”这个边界上的值,都能被二进制浮点数精确表示(如 0.125、2.625),其他值离舍入边界足够远,所以不用担心浮点误差。

输入

  • bills(id, amount, total, n):amount 是浮点数,total、n 是整数。

输出

列为 id, amount_r, per_head,每张账单一行,行顺序不限。

输入表 (case base,共 2 个 case:base、half)

bills local/base/bills
#idint64amountfloat64totalint64nint64
1 1 12.3456 100 3
2 2 7.891 7 7
3 3 100.0 10 4
4 4 3.14159 0 5
5 5 0.004 99 10
6 6 58.996 250 8
共 6 行

期望输出 (case base,行顺序不限)

#idInt64amount_rFloat64per_headInt64
1 1 12.35 33
2 2 7.89 1
3 3 100.0 2
4 4 3.14 0
5 5 0.0 9
6 6 59.0 31
共 6 行