javascript 数据单位格式化工具支持多进制(1000/1024)与自定义单位序列,自动选择≥1的最适单位,依数值范围动态控制小数位(≥100取整,1–99.99保留1位,0.1–1保留2位),覆盖存储、网络、时间等场景。

用 JavaScript 实现通用的数据单位格式化工具,核心是把原始数值按指定单位(如 B/KB/MB/GB/TB 或 ms/s/min/h/d)自动缩放、取舍并拼接后缀,同时兼顾可读性、精度控制和国际习惯(如 1024 还是 1000 进制)。不需要依赖第三方库,几十行代码就能覆盖常见场景。
支持多进制与自定义单位序列
不同领域单位换算基数不同:存储通常用 1024(KiB、MiB),网络或磁盘标称常用 1000(KB、MB);时间则固定为 60/60/24。工具应允许传入 base 和 units 数组来灵活适配:
- 存储类:base=1024,units=['B', 'KiB', 'MiB', 'GiB', 'TiB']
- 十进制类:base=1000,units=['B', 'KB', 'MB', 'GB', 'TB']
- 时间类:base 序列不统一,可单独定义 thresholds=[1000, 60, 60, 24],对应 [ms→s, s→min, min→h, h→d]
自动选择最合适的单位并控制精度
避免显示 0.001 GB 或 1024.000 KiB 这类反直觉结果。策略是:从最大单位开始试除,找到第一个使数值 ≥ 1 的单位;再根据数值大小动态调整小数位数(例如 ≥ 100 时取整,1–99.99 保留 1 位,0.1–1 保留 2 位):
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
- 12345678 → 自动转为 11.8 MiB(而非 12345.678 KiB)
- 999 → 999 B(不升到 KiB,因
- 0.5678 → 568 ms(时间场景下四舍五入到整数毫秒)
提供简洁的 API 与默认配置
导出一个函数,参数尽量少而明确:
formatBytes(12345678) // → "11.8 MiB"(默认 base=1024 + KiB 单位)
formatBytes(12345678, { base: 1000 }) // → "12.3 MB"
formatDuration(3661000) // → "1h 1m 1s"
内部可预置常用格式器(formatBytes、formatDuration、formatNetwork),共享核心逻辑但封装不同单位规则,方便直接调用。
处理边界与国际化友好扩展
注意 0、负数、NaN、Infinity 等输入,返回合理字符串(如 "0 B"、"Invalid");单位符号建议使用国际标准(如 KiB 而非 KB 表二进制),同时允许用户传入本地化后缀(如 { units: ['字节', 'KB', 'MB'] })。后续如需 locale-aware 格式(千分位、小数点符号),可基于 Intl.NumberFormat 增强,但基础版保持轻量无依赖。










