人民币大写转换

把金额数字转成财务规范的人民币大写,默认示例 1234.56 打开就得到「壹仟贰佰叁拾肆元伍角陆分」。页面照抄带浮点修正的舍入算法,逐条给出规则校验,附 12 行示例对照表,全程本地计算不联网。

按裸 Enter 立即转换;上限 999999999999.99,超过会具体报错,不输出截断结果。
默认已填 3 行示例;非法行会点名行号并说明原因,不会静默归零。
批量金额(默认 3 行):
1234.56 -> 壹仟贰佰叁拾肆元伍角陆分
0.05 -> 零元零伍分
100.5 -> 壹佰元伍角

提示:金额框按裸 Enter 触发,批量框按 Ctrl/Cmd + Enter 触发。

金额 → 大写 对照表

金额(元)财务大写规则要点

对照表每行都由页面同一套 rmbUpper 算法现场算出,默认显示前 12 行,点「加载更多」展开到 18 行;导出与复制取自同一份数据。

使用方法

人民币大写转换把金额数字变成财务票据上常见的中文大写,打开页面时金额框已经填好默认示例 1234.56,结果区直接给出「壹仟贰佰叁拾肆元伍角陆分」,不必先输入就能看到一组完整结果。想转自己的金额,只要改这一个数,按裸 Enter 键(不加 Ctrl、Cmd 或 Shift)立即重算,也可以点「转换大写」。

  1. 金额框接受正数、负数与零,量程是 −999999999999.99 到 999999999999.99;超过上限会给出具体报错并停止转换,不会截断成一个看似合理的大数。
  2. 结果区下方是逐条规则校验:整数末尾是否写「整」、连续零是否合并成一个、角与分分别是什么、负数是否加了「负」前缀、超过两位小数是否按分四舍五入。这些判断都由页面现场生成,不是预写的一句话。
  3. 「复制大写」把当前大写金额收进剪贴板,「载入示例」把金额框与批量框一起还原成默认样本。
  4. 下方「批量金额」是多行文本框,每行一个金额,按 Ctrl/Cmd + Enter 一次转换整批;非法行会点名第几行并说明原因,不会悄悄按零处理。

金额框给了 min、max、step 量程:留空、填文字、超过上限、小数位不是整数,都会弹出点名具体原因的报错,绝不静默归零。结果区与错误区都带 role="alert"。对照表默认列出 12 行,点「加载更多」展开到 18 行,可导出带 BOM 的 CSV,或按 TSV 复制粘进表格软件。

能解决什么

第一个用途是防篡改。财务大写用「零壹贰叁肆伍陆柒捌玖」代替「〇一二三四五六七八九」,笔画复杂、不易被添笔改数:小写「一」添两笔就能变成「五」,「三」添笔能凑成「五」,而「壹」「叁」几乎无处下笔。这类大写不是书法偏好,而是金额书写里降低涂改风险的制度性设计。

第二个用途是把零的读法统一。10001 不能读成「壹万零仟零佰零拾壹」,正确是「壹万零壹元整」:连续多个零只读一个,每级末尾的零不读。手工写大写时最容易在这里多写或少写一个「零」,本页按算法统一合并,避免同一笔金额出现两种写法。

第三个用途是处理角分与「整」的边界。「整」表示金额到元或到角为止、没有零星分;只有角没有分时不写「整」,100.5 是「壹佰元伍角」而不是「壹佰元伍角整」。角为 0 而分非 0 时要补「零」,20.08 是「贰拾元零捌分」。这些细节正是手写最容易出错的地方。

还需要把话说清:大写金额只是书写规范,不是票据生效要件。它不联网、不校验票据真伪,也不承诺在任何票据场景下的法律效力;实际报销、开票与合同填写,一律以本单位财务制度和票据法规为准,必要时由财务人员复核。

原理和变量

第一步是把金额化成「分」这个整数,这一步藏着全页最要紧的坑。IEEE 754 双精度下 1.005 × 100 = 100.49999999999999,直接 Math.round 会得到 100 分,把 1.005 错舍成「壹元整」。因此实现里写的是 cents = Math.round(Math.abs(x) * 100 + 1e-6),加一个极小的 epsilon 抵消浮点下溢,再取整。加了它,1.005 得「壹元零壹分」、1.004 得「壹元整」、0.995 得「壹元整」。

第二步把整数部分按 4 位分组,组间单位是「个 / 万 / 亿」,组内从高到低用「仟佰拾」配数字。每组独立拼好后,若本级不足四位且与前级之间需要补位,就补一个「零」;最后把连续出现的「零」合并成一个,并去掉末尾多余的「零」。整数部分末尾统一加「元」。

第三步处理角分:jiao = floor((cents % 100) / 10),fen = cents % 10。角分都为 0 时写「整」;否则角大于 0 写「X角」,分大于 0 写「X分」,角为 0 而分大于 0 时先补「零」。只有角没有分时不写「整」。负数在最终结果前加「负」。金额以分为最小单位,超过两位小数的输入按四舍五入到分处理。

变量含义示例值
x输入金额(元)1234.56
cents四舍五入后的总分数123456
yuan / jiao / fen元、角、分三级1234 / 5 / 6
D数字大写表零壹贰叁肆伍陆柒捌玖
U4 / G组内单位 / 组间单位拾佰仟 / 万亿

上限 999999999999.99 小于 1 万亿,是因为分组单位只到「亿」;再大就需要「兆」等新单位,本页不扩展,超过直接报错而不是输出一个位数不对的结果。

完整示例

以默认 1234.56 走一遍:cents = round(1234.56 × 100 + 1e-6) = 123456,拆成 yuan=1234、jiao=5、fen=6。整数 1234 按 4 位一组是「壹仟贰佰叁拾肆」,末尾加「元」,角分写「伍角陆分」,合起来是「壹仟贰佰叁拾肆元伍角陆分」。这与结果区、批量输出和对照表第一行完全一致。

再看几个边界:100.5 只有角没有分,得「壹佰元伍角」,不写「整」;100 角分皆零,得「壹佰元整」;0 得「零元整」;20.08 角为 0 分非 0,先补「零」得「贰拾元零捌分」;608.07 得「陆佰零捌元零柒分」,中间那个「零」是连续零合并后的唯一一个。

10001 得「壹万零壹元整」、1000001 得「壹佰万零壹元整」,演示跨级补零;负数 −1234.56 得「负壹仟贰佰叁拾肆元伍角陆分」;上限 999999999999.99 得「玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元玖角玖分」。这些都不是写死的答案,改金额框后由同一算法重算。

批量框默认填了三行,按 Ctrl/Cmd + Enter 一次列出结果;某行非法会点名并说明跳过原因。人民币大写转换的所有示例与对照表固定行都由 rmbUpper 现场生成,不是手抄答案。

对照表

对照表把 12 组典型金额排在一起,默认显示前 12 行,点「加载更多」展开到 18 行。前 12 行覆盖含角分、只有角、整、零值、跨级补零、负数与上限:1234.56、0.05、100、100.5、100000000、999999999999.99、10001、1000001、20.08、0、−1234.56、608.07。后 6 行是舍入边界 1.005、1.004、0.995、1.006、0.01、50.5。

「规则要点」列由页面按角分与零的实际情况现场判定,例如只有角没有分的行会标「不写整」,角为 0 分非 0 的行标「补零」。每一行的财务大写都由 rmbUpper 算出,不是手抄答案;改金额框不会改这张表,它是一组固定参数的展开。

点「导出对照表 CSV」得到带 BOM 的文件,Excel 打开不乱码;点「复制对照表」按 TSV 复制,可直接粘进表格软件自动分列。

结果边界与舍入

常见问题

为什么 1.005 不是「壹元整」?

因为双精度浮点里 1.005 × 100 = 100.49999999999999,直接四舍五入会丢掉那一分。本页照抄的实现加了 1e-6 的 epsilon 再取整,1.005 得「壹元零壹分」。这个坑正是财务大写必须写明舍入规则的原因,对照表后 6 行也专门列了这组边界。

「整」什么时候写、什么时候不写?

只有角和分都为 0 时才写「整」,例如 100 → 「壹佰元整」、0 → 「零元整」。只要有分就不写;只有角没有分也不写,100.5 → 「壹佰元伍角」。「整」表示金额到元或到角为止、没有零星分。

10001 为什么不是「壹万零仟零佰零拾壹」?

因为连续多个零只读一个,每级末尾的零不读。按 4 位分组,个级是 0001,拼成「壹」,万级与个级之间补一个「零」,得「壹万零壹元整」。手工大写最容易在这里多写「零」,本页用合并连续零的算法统一处理。

角为 0 但有分,为什么要补「零」?

为了把元与分之间的空位读出来。20.08 的角是 0、分是 8,写成「贰拾元零捌分」;608.07 同理是「陆佰零捌元零柒分」。若分也为 0 就不补,直接写「整」。

能转 1 万亿或更大的金额吗?

不能。上限是 999999999999.99,小于 1 万亿,因为分组单位只到「亿」。超过会给出具体报错并停止转换,不会截断位数输出一个看似合理的大数;这类金额请按财务制度另行处理。

输入三位小数会怎样?

金额以分为最小单位,超过两位小数按四舍五入到分处理并在结果区明确提示。例如 1.006 会按分舍入,不会出现「厘」。若你手上的金额本来就精确到分,请直接填两位小数,避免舍入带来歧义。

负数金额支持吗?

支持。负数会在大写前加「负」前缀,例如 −1234.56 得「负壹仟贰佰叁拾肆元伍角陆分」,结果区也会提示已按负数处理。但真实票据里负数通常写作「冲销」或另行标注,实际填写仍以本单位财务制度为准。

转换结果能直接用于支票或合同吗?

不能这样承诺。本页只提供书写规范下的大写文本,不联网、不校验票据真伪,也不是票据生效要件。报销单、支票、合同的填写要求由本单位财务制度和票据法规决定,请由财务人员复核后再使用。

相关工具

下面三个站内工具都与「把文本整理清楚」有关,按需取用,均为已上线的站内页面。