数字格式化
千位分隔符、小数点、货币格式化:支持西式与印度式分组(12,34,567)、四舍五入/银行家舍入/向上/向下、科学计数法、SI 与二进制前缀、货币符号与负数括号写法、百分比、人民币中文大写金额与 BigInt 大整数分组。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
输入
所有舍入都先把数字放大成整数再取整,避免 1.005 × 100 = 100.49999999999999 这类二进制残差。
格式化结果
1.23457e+61.23M1.18Mi123456789.10%壹佰贰拾叁万肆仟伍佰陆拾柒元捌角玖分一百二十三万四千五百六十七1,234,567这个工具能做什么
- 写报表或对账:把 1234567.891 变成 1,234,567.891,还能按需换成印度式分组 12,34,567。
- 处理金额:加货币符号、用括号写法表示负数(会计习惯),并同时得到人民币大写「壹佰贰拾叁万…」,票据与合同都能直接用。
- 核对舍入规则:同一个数字在四舍五入与银行家舍入下会差一分钱,切换模式立刻能看到差别,避免结算口径不一致。
- 做技术文档:同一数值一次拿到科学计数法、SI 前缀(1.23M)与二进制前缀(1.18Mi),以及任意长度整数的 BigInt 分组。
示例
输入
数字 1234567.891,小数位 3,西式分组
输出
格式化后 1,234,567.891;科学计数法 1.23457e+6;SI 前缀 1.23M;二进制前缀 1.18Mi;百分比 123456789.10%;人民币大写 壹佰贰拾叁万肆仟伍佰陆拾柒元捌角玖分;中文读法 一百二十三万四千五百六十七;BigInt 分组 1,234,567
把分组切成印度式会得到 12,34,567.891;小数位填 0 时同一个数字变成 1,234,568;输入 -1234.5 并勾选括号写法会得到 (1,234.50)。
常见问题
四舍五入和银行家舍入差在哪里?
只在「恰好是 5」时不同:四舍五入一律进位(2.5 → 3),银行家舍入进位到最近的偶数(2.5 → 2,3.5 → 4)。银行家舍入是 IEEE 754 的默认舍入模式,在大量对账时不会持续向一个方向累积误差,所以财务系统常用它。
为什么 1.005 保留两位小数会得到 1.01?
因为 1.005 在二进制浮点里其实是 1.00499999999999989…,直接乘 100 再取整会得到 100 而不是 101。工具在放大时先用 toPrecision(15) 消掉这层残差,所以结果与十进制直觉一致(1.01)。
印度式分组是什么规则?
印度数字惯例是最后三位一组,往前每两位一组:1234567 写成 12,34,567,123456789 写成 12,34,56,789。它常用于印度、巴基斯坦等地区的发票与财务报表,和西式每三位一组不同。
中文大写金额有哪些规则?
数字用零壹贰叁肆伍陆柒捌玖,单位用拾佰仟万亿;金额以元结尾,角分不为 0 时写「X角Y分」,角分为 0 时以「整」结尾(壹佰元整)。元位是 0 但有角分时写成「零元伍角」,整数部分中间缺位补「零」(壹佰元零伍分)。
很大的整数怎么处理?
超过 2^53 的整数用 Number 会丢精度,所以 BigInt 分组走独立的 BigInt 通道,任意长度都能精确分组。普通格式化在 |x| ≥ 1e21 时会拒绝,因为 JS 此时会把数字转成指数形式字符串,分组无从下手。
关键词:number formatterthousands separatorindian number formatbankers roundingscientific notationsi prefixchinese uppercase amount数字格式化千分位银行家舍入科学计数法中文大写金额