底座 P0 已上线 L0

财税数值工具

金额大写人民币写法规范,含税不含税互算、价税分离、尾差分摊严格守恒,占比≥100与基数为0直接拒

技能 slugfinance-number-tool
所属栏目底座 计算工具 / 归档 / 合规
交付阶段P0 P0 计划 · 验证财税品类能否吃住「数据不出电脑」,且只做地基类(清洗/合并/脱敏/异常)与最高频刚需
版权© 2026 律令科技(深圳)有限公司开发 · 财友云(caiyouyun.cn)发布
这个包已上线。复制到本地即可离线运行;正文与用法以下方随包 SKILL.md 为准。

技能正文(随包 SKILL.md)

> **本地运行,零网络、免 API Key、数据不出电脑。**
> 四项诚实承诺:① 算不出就说算不出,绝不编造数字;② 高危动作强制人工确认;③ 幂等断点,绝不重复副作用;④ 全程留痕可审计。

# 财税数值工具

数值换算看着最"不会错",其实错得最隐蔽:大写少写一个「零」、
价税分离的税额用了「含税 × 税率」导致两列加起来差一分、
分摊尾巴凑不平却把差额悄悄抹掉——
表都长得像回事,核账时才发现对不上。

本包把 6 类高频换算收在一处,并且**每次都做守恒断言**:
价税分离的「不含税 + 税额」必须严格等于原含税金额,
尾差分摊的各份之和必须严格等于总额,差一分钱就直接报「算不出」。

## 输入

命令行参数算一笔,或传一张批量表逐行算(`.xlsx` / `.csv`):
一张表只跑一个 `--cmd`,列名自动识别:

| 用途 | 可识别列名 |
|---|---|
| 金额 / 总额 | 金额 / 含税金额 / 不含税金额 / 总额 / 合计 / 数值 / 价款 |
| 税率 | 税率 / 税率(%) / 税率% / 征收率 / 适用税率(**百分数**,13 = 13%) |
| 份数 | 份数 / 分摊份数 / 拆分数 / 份数N |
| 权重 | 权重 / 分摊权重 / 分摊比例 / 份额 |
| 部分金额 | 部分金额 / 部分值 / 其中一个数 / 部分 |
| 占比 | 占比 / 占比(%) / 占比% / 比例 / 百分比 |
| 数量 | 数量 / 件数 / 吨数 / 采购数量 / Qty |
| 编号 | 编号 / 单号 / 项目 / 名称 / 摘要 / 序号 |

`--cmd` 六选一:`cap` 金额大写 / `tax` 含税不含税互算 / `split` 价税分离 /
`apportion` 尾差分摊 / `reverse` 百分比反算 / `unit` 单价汇率。

## 输出四件套

| 文件 | 内容 |
|---|---|
| `nt_主表.csv` | 换算结果(列随 `--cmd` 变化,附 `_来源文件` / `_原始行号`) |
| `nt_异常表.csv` | 不可计算项(原因 + 风险等级) |
| `nt_校验表.csv` | 各类换算口径、守恒差异、拒项统计 |
| `fin-log.jsonl` | 处理日志(追加) |

## 用法

```bash
PY="<python 3.8+ 路径>"   # 纯标准库
"$PY" <skill目录>/scripts/num_tool.py --cmd cap --amount 1234.56 --execute
```

六类换算(命令行单笔):

```bash
"$PY" num_tool.py --cmd cap --amount 1234.56 --execute          # 金额大写
"$PY" num_tool.py --cmd tax --amount 1000 --tax-rate 13 --execute        # 不含税 → 含税
"$PY" num_tool.py --cmd tax --amount 1130 --tax-rate 13 --to 不含税 --execute  # 含税 → 不含税
"$PY" num_tool.py --cmd split --amount 1000.01 --tax-rate 13 --execute   # 价税分离
"$PY" num_tool.py --cmd apportion --total 10000.01 --parts 3 --execute   # 尾差分摊
"$PY" num_tool.py --cmd reverse --part 30000 --ratio 25 --execute        # 占比 25% 反算总数
"$PY" num_tool.py --cmd unit --amount 30000 --qty 100 --execute          # 单价
```

批量表(一列一行,逐行算):

```bash
"$PY" num_tool.py 数值换算表.xlsx --cmd split --execute
"$PY" num_tool.py 数值换算表.xlsx --cmd apportion --execute
"$PY" num_tool.py 数值换算表.xlsx --cmd reverse --execute
```

**默认不写盘**——不加 `--execute` 只打印预览,确认无误再真跑。
输出目录用 `--out-dir` 改(默认 `_out`),操作人用 `--operator` 记进日志。

## 真实输出样例(实测粘贴)

金额大写(18 个边界值,`_out/nt_金额大写边界.xlsx`):

```
方案:nt_金额大写边界.xlsx | 换算类型 cap(金额大写)
--- 换算结果(18 行)---
  CAP-01              0.00  →  零元整
  CAP-02              0.05  →  零元零伍分
  CAP-03              0.56  →  零元伍角陆分
  CAP-04              1.00  →  壹元整
  CAP-05             10.00  →  壹拾元整
  CAP-06            100.00  →  壹佰元整
  CAP-07          1,001.00  →  壹仟零壹元整
  CAP-08          1,010.00  →  壹仟零壹拾元整
  CAP-09          1,100.00  →  壹仟壹佰元整
  CAP-10          1,234.56  →  壹仟贰佰叁拾肆元伍角陆分
  CAP-11         16,409.02  →  壹万陆仟肆佰零玖元零贰分
  CAP-12          1,700.31  →  壹仟柒佰元叁角壹分
  CAP-13         -1,234.56  →  负壹仟贰佰叁拾肆元伍角陆分
  CAP-14    100,000,001.00  →  壹亿零壹元整
  CAP-15    100,010,000.00  →  壹亿零壹万元整
  CAP-16  123,456,789,012.34→  壹仟贰佰叁拾肆亿伍仟陆佰柒拾捌万玖仟零壹拾贰元叁角肆分
  CAP-17          1,234.57  →  壹仟贰佰叁拾肆元伍角柒分     ← 1,234.567 四舍五入到分
  CAP-18          1,234.56  →  壹仟贰佰叁拾肆元伍角陆分     ← 输入 "¥1,234.56"
--- 异常表:本次未发现不可计算项(0 条)---
```

价税分离(`nt_数值换算表.xlsx`,13% / 13% / 6% / 0% / 9% 五行):

```
--- 换算结果(5 行)---
  G-01      含税     1,130.00 → 不含税     1,000.00 + 税额     130.00(不含税+税额 = 1,130.00)
  G-02      含税     2,260.00 → 不含税     2,000.00 + 税额     260.00(不含税+税额 = 2,260.00)
  G-03      含税     1,000.01 → 不含税       943.41 + 税额      56.60(不含税+税额 = 1,000.01)
  G-04      含税     3,390.00 → 不含税     3,390.00 + 税额       0.00(不含税+税额 = 3,390.00)
  G-05      含税     5,650.00 → 不含税     5,183.49 + 税额     466.51(不含税+税额 = 5,650.00)
```

尾差分摊(同一张表,1,130.00 等分 3 份 + 10,000.01 等分 3 份):

```
--- 换算结果(15 行)---
  G-01      第1份 权重 1,1,1       分摊额       376.67 本份尾差  1 分 累计     376.67
  G-01      第2份 权重 1,1,1       分摊额       376.67 本份尾差  1 分 累计     753.34
  G-01      第3份 权重 1,1,1       分摊额       376.66 本份尾差  0 分 累计   1,130.00
  ...
  G-03      第1份 权重 1,1,1       分摊额       333.34 本份尾差  1 分 累计     333.34
--- 不可计算 / 异常(1 条)---
  [高] G-05:份数缺失,算不出分摊
```

百分比反算与单价:

```
  G-01      部分    30,000.00 占    25.00% → 总数     120,000.00 另一部分      90,000.00
  G-05      部分    60,000.00 占    60.00% → 总数     100,000.00 另一部分      40,000.00

  G-01      金额     1,130.00 ÷     100.00 → 单价        11.30
  G-03      金额     1,000.01 ÷       0.50 → 单价      2000.02
--- 不可计算 / 异常(1 条)---
  [高] G-05:数量「」不是数字
```

校验表尾段(守恒断言,实测):

```
  主表行数 | 18
  异常行数 | 0
  输入行数 | 18
  主表金额合计 | 123656822814.41
  异常表金额合计 | 0.0
  守恒差异(入-主-异) | 0.0
```

命令行单笔(预览模式,不加 `--execute` 不写盘):

```
--- 换算结果(1 行)---
  命令行             1,234.56  →  壹仟贰佰叁拾肆元伍角陆分
--- 异常表:本次未发现不可计算项(0 条)---
[预览模式] 未写盘。确认无误后加 --execute 执行。
```

## 拒绝权(什么情况下算不出)

命令行单笔:命中即 `C.refuse`,打印「【算不出】」并退出码 2,不产出任何数字。

| 情况 | 处理 |
|---|---|
| 基数(含税金额 / 总额 / 部分金额 / 金额)≤ 0 | **拒绝**:「本包绝不按 0 或负数算」 |
| 数量 = 0 或负数 | **拒绝**:「本包绝不按 0 或负数算单价」 |
| 税率缺失(命令行没给、表里也没有) | **拒绝**:「不给税率无法做价税分离」 |
| 税率为负 | **拒绝**:负数税率没有意义 |
| 税率 > 100% | **拒绝**:不合理 |
| 占比 ≥ 100% / 总数 ≤ 部分金额 | **拒绝**:反算无意义,不编造 |
| 份数不是正整数 / 权重个数与份数不符 | **拒绝** |
| 金额 / 税率 / 占比不是数字(如"下个月""两成半") | **拒绝** |
| 金额 ≥ 1 万亿 | **拒绝**:超出能核对的大写范围 |
| `--cmd` 认不出来(如"大写") | **拒绝**,列出 6 个可选项 |

批量表模式:命中行进**异常表(高)**,不产生任何数值、不参与守恒,
其余行照常出表;只有「一行都算不出来」时才整体拒绝
(如整表无税率)。

## 关键设计(容易踩的坑)

1. **金额大写按人民银行《正确填写票据和结算凭证的基本规定》**:
   - 先四舍五入取到分(1,234.567 → 壹仟贰佰叁拾肆元伍角柒分,主表「已四舍五入到分」列标「是」)
   - 角为 0 分位非 0 →「元」后写「零」:¥16,409.02 → 壹万陆仟肆佰零玖元**零**贰分
   - 角为 0 分也为 0 → 收「整」;角非 0 分位为 0 →「…x角整」:¥10.00 → 壹拾元整
   - 连续零只写一个「零」:¥1,001.00 → 壹仟**零**壹元整
   - ¥1,700.31 属人民银行规则③「可写零可不写零」,本包选择不写:壹仟柒佰元叁角壹分
   - **金额为 0 输出「零元整」**,绝不输出空串;负数前置「负」;
     绝对值 < 0.005 四舍五入后归零,按「零元整」出,不带「负」
2. **价税分离的税额是倒挤的**:税额 = 含税金额 − 不含税金额,
   不是「含税 × 税率」。后者在分位上会差 1 分(1,000.01 @13% 尤其明显),
   本包用倒挤 + 守恒断言,主表「不含税+税额」列就是给对账用的验算值。
3. **尾差分摊在「分」上做,不在「元」上做**:总额先转成分,
   按权重逐份截尾取整,余数按小数部分从大到小补分,
   各份之和严格等于总额(实测 1,130.00 分 3 份 = 376.67 + 376.67 + 376.66)。
   每份单列「本份尾差(分)」,最后一份「累计分摊」必然等于总额。
4. **含税↔不含税只按 (1+r) 折算**,不做任何"看起来差不多"的近似;
   r 按**百分数**填(13 = 13%,也可写 "13%");免税填 0 会照算并标注,
   但**空值不给默认税率**——猜税率比算错更危险。
5. **百分比反算两条路都留**:已知「部分 + 占比」反总数,
   或已知「总数 + 部分」反占比;占比 ≥ 100% 一律拒绝。
6. **单价换算**:单价 = 金额 ÷ 数量;给了 `--price` 就反算数量。
7. 本包只做**数值换算**,不管票据样式、不管审批流程、不管大小写是否进凭证。

## 人工复核(必读)

- 金额大写用于票据/合同前,请对照业务习惯确认「零」的写法取舍
(¥1,700.31 这类规则③允许两种写法的金额,银行都认,但与本单位模板不一致时需统一)
- 税率口径请与合同 / 发票核对(13% 一般税率、9% 交通运输等、6% 现代服务、3% 小规模征收率)
- 价税分离的税额是**倒挤值**,与「含税 × 税率」可能有 1 分差异,属正常
- 尾差分摊的权重口径(面积 / 人数 / 预算占比)请与分摊方案一致,
  本包只负责把金额摊平,不负责决定按什么摊
- 金额 ≥ 1 万亿本包拒绝出大写,请先与业务确认是否误填
- 结果仅供财务复核,入账 / 申报 / 付款口径需人工确认

## 相邻路线转交

| 用户要做的事 | 转交给 |
|---|---|
| 增值税 / 各税种应纳额计算 | `tax-amount-calc` |
| 发票金额与税额核对 | `invoice-book` |
| 成本按部门 / 项目分摊(有科目余额表) | `cost-allocation` |
| 报销金额汇总 | `expense-summary` |
| 应付账款账期与付款排期 | `ap-payment-schedule` |
| 会计期间 / 账期起止日换算 | `period-tool` |

## 可直接复制的说法

```text
帮我把这几个数算一下:金额大写按人民银行写法来,
角为 0 分位不为 0 的要写「零元零X分」,连续零只写一个零,
金额为 0 就写「零元整」,不要留空。
价税分离时税额 = 含税金额 − 不含税金额,不要用「含税 × 税率」,
两列加起来必须严格等于原含税金额,差一分钱就说算不出。
金额要分摊的话,各份加起来也必须严格等于总额,
尾差单列出来,不许默默抹平。
基数为 0 或负数、税率没给、占比超过 100%,直接拒,
不要按 0 算一遍糊弄我,也不要给我一个看着合理的替代数。
```

## 做完怎么算完成

- [ ] 大写金额已逐条对照人民银行写法(零 / 整 / 负 / 零元整)
- [ ] 价税分离的「不含税 + 税额」列已逐行等于原含税金额
- [ ] 尾差分摊各行「累计分摊」最后一行 = 总额,尾差已查明去向
- [ ] 税率口径(13% / 9% / 6% / 3%)已与合同、发票核对
- [ ] 异常表逐条已追查,无「未说明原因的缺失」
- [ ] 被拒绝的行确实是因为缺参数 / 基数为 0,不是脚本没跑到

---

本 Skill 采用 BUSL-1.1 许可(源码可见,可自由使用)。

版权所有 © 2026 律令科技(深圳)有限公司(@lexord-technology)。
本技能由律令科技(深圳)有限公司开发,**财友云(caiyouyun.cn)**发布与展示。

允许个人及企业内部免费使用、复制、修改,包括内部生产环境。
未经书面许可,不得将本 Skill 或其修改版作为商业服务对外销售、转售或提供托管服务。
各版本发布之日起 4 年后自动转为 Apache License 2.0。详见随包 `LICENSE.md`。

相邻技能

底座 规划中P0 计划 已上线

税费计算

增值税/附加/个税/印花税/所得税预缴,附公式与政策依据

L1 · 计算工具 / 归档 / 合规
底座 规划中P1 在建 已上线

工资表计算

五险一金 + 个税累计预扣预缴 + 实发,支持多地参数表

L1 · 计算工具 / 归档 / 合规
底座 规划中P1 在建 已上线

固定资产折旧

直线/双倍余额/年数总和/工作量法,生成折旧明细表

L1 · 计算工具 / 归档 / 合规
底座 规划中P1 在建 已上线

会计期间工具

期间生成、周旬季年切换、工作日调整、账期与自然日换算

L0 · 计算工具 / 归档 / 合规
底座 规划中P1 在建 已上线

会计档案归档

按年度-凭证号-附件组织,生成目录清单与完整性校验

L0 · 计算工具 / 归档 / 合规
底座 规划中P2 长尾 已上线

工资条拆分生成

按人拆成独立文件,可加密打包,不留明文

L0 · 计算工具 / 归档 / 合规
底座 规划中P2 长尾 已上线

摊销计算

无形资产与长期待摊费用摊销明细表

L0 · 计算工具 / 归档 / 合规
底座 规划中P2 长尾 已上线

固定资产卡片台账

新增/折旧/处置/盘点全生命周期台账

L0 · 计算工具 / 归档 / 合规
底座 规划中P2 长尾 已上线

贷款还款计划

等额本息/等额本金/气球贷,含实际利率与 IRR 校验

L0 · 计算工具 / 归档 / 合规
底座 规划中P2 长尾 已上线

外币折算与汇兑损益

多币种折算、期末汇兑损益计算,汇率走内置表或导入

L1 · 计算工具 / 归档 / 合规
底座 规划中P2 长尾 已上线

操作留痕查询

合并查询所有财税技能的运行日志,按时间/技能/级别过滤

L0 · 计算工具 / 归档 / 合规
底座 规划中P2 长尾 已上线

财务敏感信息扫描

银行卡/身份证/税号/账套口令扫描与脱敏报告

L0 · 计算工具 / 归档 / 合规
本页内容由本地构建生成于 2026-09-27。技能正文以随包 SKILL.md 为准。