使用Globalize的新版本1.2.1,我们看到了17种文化,对于“数百”范围内的数字(例如介于100和999之间),解析失败。
以下是使用CLDR JSON data版本30.0.2的具体示例(也使用CLDR 30.0.3数据进行了测试,结果相同):
var g = new Globalize("en-IN");
g.numberParser()(g.numberFormatter()(1000.01)); // prints 1000.01
g.numberParser()(g.numberFormatter()(999.99)); // prints NaN
据我所知,格式化数字999.99然后解析它不应该产生NaN
,所以这看起来像一个错误。 NaN
也是数字100的结果,实际上它似乎是具有三位有效数字的任何数字的结果。
如果我们只关注解析步骤,我们会看到以下内容:
var g = new Globalize("en-IN");
console.log(g.numberParser()("1,000.01")) // prints 1000.01
console.log(g.numberParser()("100.01")) // prints NaN
如果我们使用版本1.1.2中较早的Globalize代码,那么行为是正确的(即没有NaN问题)。
有问题的17种文化是:as-IN,bn-BD,bn-IN,brx-IN,dz-BT,en-IN,gu-IN,hi-IN,kok-IN,ks-Arab-IN,ml-IN,mr-IN,or-IN,pa-IN,ta-IN,ta-LK,te-IN
。在我们升级到Globalize 1.2.1之后,我们的单元测试将它们全部选中。
我们想知道是否有人可能会确认他们可以重现这个(有没有一个jsfiddle模板来做这种事情?),以及新版本的Globalize中的哪些变化(假设它是一个问题Globalize)正在引发这个问题,以便我们可以发布相应的问题。
答案 0 :(得分:1)
更新:这已在Globalize 1.2.2中修复。
感谢您的精彩描述。这绝对是一个错误,我已将其归档为https://github.com/globalizejs/globalize/issues/660。