1

在Globalize的新版本 1.2.1 中,我们看到 17 种文化在“数百”范围内(例如 100 到 999 之间)的数字解析失败。

这是一个使用CLDR JSON 数据版本 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 然后解析它不应该 yield 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 中的一个问题)是造成这种情况,以便我们可以发布相应的问题。

4

1 回答 1

1

更新:这在 Globalize 1.2.2 中已修复。


感谢您的精彩描述。这绝对是一个错误,我已将其归档为https://github.com/globalizejs/globalize/issues/660

于 2016-12-20T09:51:44.300 回答