You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Intl.NumberFormat(ar/fa区域)格式化结果不符,求正确期望字符串

波斯语区域Intl.NumberFormat精确返回值与测试修正

你代码中使用的是fa(波斯语)区域而非阿拉伯语(ar),针对你的格式化需求,以下是正确的处理方案:

代码与返回值解析

你的格式化代码:

const value = new Intl.NumberFormat('fa', {
  minimumIntegerDigits: 4,
  minimumFractionDigits: 2,
  style:'percent'
}).format(1.2);
  • 数值转换:1.2转为百分比是120%,结合参数要求,数值部分被格式化为4位整数+2位小数的波斯数字:٠٬١٢٠٫٠٠
  • 后缀处理:波斯语区域的百分比符号٪后会附带阿拉伯文零宽非连接符(U+061C),也就是你看到的؜,这是RTL(从右到左)文本系统中用于排版方向控制的标准字符,而非左至右标记(U+200E)。

正确的测试期望值

将断言修改为:

expect(value).toEqual('٠٬١٢٠٫٠٠٪؜');

补充说明

不同JS运行环境(如浏览器、Node.js)的Intl实现可能存在细微差异,但符合ECMA-402标准的波斯语区域格式化结果都会包含这个零宽非连接符,用于确保RTL文本与百分比符号的正确排版顺序。

内容的提问来源于stack exchange,提问作者Matthieu Riegler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 21:22:19