Intl.NumberFormat 的 unit 属性仅支持 ECMA-402 标准认证的规范单位标识符(如 "gigabyte"、"meter"),不支持缩写("GB")、复数("bytes")或自定义复合单位;unitDisplay 可设为 short/long/narrow 控制显示样式,数值须为数字类型。

Intl.NumberFormat 的 unit 属性专为格式化带单位的物理量设计,但需注意:它只支持 ECMA-402 标准认证的简单单位标识符(如 "byte"、"gigabyte"、"meter"、"second"),不支持随意拼接(如 "GB" 或 "500GB" 这类字符串)。
使用标准单位标识符(推荐方式)
ECMA-402 定义了规范化的单位名(小写、单数、无缩写),例如:"gigabyte" 而非 "GB";"kilometer" 而非 "km"。浏览器会自动按语言区域选择合适的显示形式(含空格、大小写、符号)。
-
✅ 正确示例:
new Intl.NumberFormat("zh-CN", { style: "unit", unit: "gigabyte" }).format(500)→"500 GB"(中文环境) -
✅ 同样有效:
new Intl.NumberFormat("en-US", { style: "unit", unit: "gigabyte" }).format(500)→"500 GB"(英文环境) -
❌ 错误用法:
unit: "GB"或unit: "bytes"(复数)、unit: "gigaByte"(大小写错误)均会抛出RangeError
支持的常见单位类型
除 "gigabyte" 外,常用物理单位包括:
-
数据存储:
"bit"、"byte"、"kilobyte"、"megabyte"、"gigabyte"、"terabyte"、"petabyte" -
长度:
"meter"、"kilometer"、"centimeter"、"millimeter"、"inch"、"foot"、"mile" -
质量:
"gram"、"kilogram"、"ounce"、"pound" -
时间:
"second"、"minute"、"hour"、"day"、"week"、"month"、"year"
完整列表见 ECMA-402 Annex B。
控制单位显示样式(unitDisplay)
通过 unitDisplay 选项可调整单位呈现方式:
-
"short"(默认):显示简写单位,如"GB"、"km"、"kg" -
"long":显示全称,如"gigabytes"、"kilometers"(注意:自动复数,且与语言区域一致) -
"narrow":极简符号(部分语言支持),如"G"(仅限特定单位和 locale)
示例:new Intl.NumberFormat("zh-CN", { style: "unit", unit: "gigabyte", unitDisplay: "long" }).format(1) → "1 吉字节"(中文)或 "1 gigabyte"(英文)
注意事项与常见问题
-
数值必须是数字:不能传入字符串如
"500",否则格式化结果可能异常(如显示为"500 GB"但内部未正确解析) -
单位不可自定义:无法添加新单位(如
"TiB"或"Mbps"),也不支持复合单位(如"MB/s") -
精度由 number formatting 控制:小数位由
minimumFractionDigits/maximumFractionDigits决定,与单位无关 -
兼容性:Chrome 78+、Firefox 76+、Safari 15.4+ 支持
unit;旧版需降级处理(如手动拼接)
若需显示非标准单位(如 "TiB"、"Mbps" 或带斜杠的复合单位),应避免依赖 unit,改用基础数字格式化 + 字符串拼接,并自行处理 locale 差异。

















