数字格式化器,免费

使用逗号、缩写、货币符号和自定义小数位数格式化数字。

工作原理

  1. 输入您的数字:输入或粘贴数字值 · 整数、小数、大数字或科学记数法。
  2. 选择格式选项:选择您的区域(美国、欧洲等)、小数位数、分组分隔符,以及如有需要的货币符号。
  3. 复制格式化结果:数字立即以您选择的格式显示。复制后用于报告、文档或导出。

为什么使用数字格式化器?

在不同地区,数字的书写方式不同。美国将一千写作 1,000.00,而许多欧洲国家写作 1.000,00。在不同系统之间复制原始数字会导致解析错误、误读和财务错误。数字格式化器确保您的数字能正确地展示给任何受众 · 无论是准备财务报告、本地化内容,还是清理数据以作展示。

功能特性

常见问题

美国和欧洲的数字格式有什么区别?

在美国,小数分隔符是点(.),千位分隔符是逗号(,)· 例如 1,234.56。在大多数欧洲国家则正好相反:1.234,56。此工具可在两种格式之间正确转换。

可以为货币格式化数字吗?

可以。启用货币模式并选择一个符号($ € £ ¥ 等),使其作为前缀显示在格式化的数字之前。对于使用负数约定的会计格式,请启用会计模式。

可以处理非常大或非常小的数字吗?

可以。格式化器处理多位数字,可以以标准、分组或科学记数法显示。浮点精度应用于配置的小数位。

数字格式化标准从何而来

今天在软件中看到的数字格式由一小堆标准定义,这些标准花了三十年才稳定下来。IEEE 754(1985),在2008年和2019年修订,确定了二进制浮点数的位布局:64位分为1位符号、11位指数、52位尾数,这就是每个JavaScript数字在底层的样子。ISO 4217(1978,当前版本2015)定义了三字母货币代码,USD、EUR、JPY、INR、BRL,以及每种货币有多少子单位(USD为2,JPY为0,KWD为3,CLF为4)。Unicode CLDR(Common Locale Data Repository)于2003年首次发布,是记录每个区域设置的分组分隔符、小数分隔符、货币符号和复数规则的开放数据集;当前版本是CLDR 46(2024年10月)。ECMA-402(2012),ECMAScript国际化API,通过Intl.NumberFormat给JavaScript提供了对这些数据的原生绑定,后者由V8、JavaScriptCore和SpiderMonkey中的ICU(International Components for Unicode)支持。这四个规范共同使得(1234567).toLocaleString('de-DE')返回1.234.567而不是1,234,567

你将遇到的六种区域设置模式

野生的大多数数字格式属于六种模式。记住这六种覆盖任何全球产品~95%的用户群。

舍入模式,它们实际做什么

ECMA-402(2023)为Intl.NumberFormat添加了九种舍入模式。选择改变财务总计、科学报告和税务计算。三种在实践中最重要。

此工具发挥价值之处

甚至有经验的开发者也会犯的错误

更多常见问题

为什么0.1 + 0.2不等于0.3?

因为IEEE 754二进制浮点数无法精确存储十进制小数0.1,就像10进制无法精确存储1/3。最接近0.1的64位double大约是0.1000000000000000055511151231257827021181583404541015625。相加两个这样的近似值产生一个舍入到0.30000000000000004而不是0.3的结果。每种IEEE 754语言都有此行为:Java、Python、C++、Swift,所有的。对于精确十进制运算,使用整数分或如decimal.js / Python的Decimal / Java的BigDecimal的库。

Intl.NumberFormat和toLocaleString有什么区别?

相同引擎,不同的人体工程学。(1234.5).toLocaleString('de-DE', {style: 'currency', currency: 'EUR'})new Intl.NumberFormat('de-DE', {style: 'currency', currency: 'EUR'}).format(1234.5)产生相同输出。区别:Intl.NumberFormat可重用,所以如果你用相同选项格式化许多数字,实例化一次并缓存。toLocaleString每次调用读取构造函数选项,在紧密循环中显著较慢。

印度数字系统如何工作?

印度英语和印地语以2-2-3模式而不是3-3-3分组数字:最右边三位,然后是两位的组。100,000写为1,00,000,称为一lakh(10⁵)。10,000,000写为1,00,00,000,称为一crore(10⁷)。Intl.NumberFormat('en-IN').format(12345678)返回1,23,45,678。系统扩展到arab(10⁹)和kharab(10¹¹),尽管这些在现代使用中很少见。

此工具可以处理多大的数字?

高达Number.MAX_SAFE_INTEGER = 2⁵³ − 1 = 9,007,199,254,740,991,任何整数都能精确地经历往返。超过此值,精度开始泄漏。JSON.parse("9007199254740993")返回9007199254740992,最接近的可表示double。对于更大的值,将它们粘贴为BigInt字面量(末尾带n)或将它们视为字符串。格式化器接受两者。

我的数字会被发送到任何地方吗?

不会。Intl.NumberFormat和区域数据随你的浏览器一起发货;整个管道在本地运行。在DevTools中打开网络标签并格式化一个数字,你将看到零出站请求。对于工资、收入、账户余额或任何你不会粘贴到托管服务的数据都是安全的。

相关工具

进制转换器,免费 百分比计算器,免费 科学计算器,免费 复利计算器,免费