【问题标题】:Globalize bug in new v1.2.1? Parsing certain numbers returns NaN for 17 cultures (India, Bangladesh, Bhutan)全球化新 v1.2.1 中的错误?解析某些数字会返回 17 种文化(印度、孟加拉国、不丹)的 NaN
【发布时间】:2016-12-19 11:04:38
【问题描述】:

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) 导致了这种情况,以便我们可以发布相应的问题。

【问题讨论】:

    标签: globalization jquery-globalization jquery-globalize javascript-globalize


    【解决方案1】:

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


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多