【问题标题】:jQuery number formatting not working correctlyjQuery 数字格式无法正常工作
【发布时间】:2016-12-28 02:47:21
【问题描述】:

我的用户输入包含带小数的数字。我必须将该输入修改为可用于计算的格式。

所以,考虑以下几点:

input         -->    should become
10,123.15     -->    10.123,15
10.123,15     -->    10.123,15
10,123.1      -->    10.123,10
10.123,1      -->    10.123,10
10,123        -->    10,123,00
10.123        -->    10.123,00
10.123,13562  -->    10.123,14
10,123.13562  -->    10.123,14

换句话说:使用点作为千位分隔符,逗号作为小数分隔符 en 始终返回四舍五入的两位小数。

我尝试使用正则表达式、substr、round,但我有点卡住了。我现在可以在上面提到的前两个示例中使用它,但现在它不适用于其余示例。

已经看了几个小时了,但也许你能帮我解决这个问题? JQuery Number Formatting 确实帮助了我一点,但它仍然不适用于上述所有示例。

如果有人可以帮助我,我会很高兴!

【问题讨论】:

  • 如果逗号在点之前,1. 删除逗号,2. 使用 toFixed(2),3. 使用许多欧洲数字格式化程序之一重新格式化 - 如果逗号之前的点将点替换为空,则将逗号替换为点.冲洗并重复

标签: jquery number-formatting


【解决方案1】:

您可以使用toLocaleString() 来实现此目的,前提是您提供了一个以您需要的方式格式化数字的语言环境; de-DE 例如。试试这个:

var foo = '10,123.15'; // number as string
var num = parseFloat(foo.replace(',', '')); // remove the , and convert to float
console.log(num.toLocaleString('de-DE')); // format to locale

【讨论】:

    【解决方案2】:

    谢谢回答!

    我尝试了它们,因此我有了更多的想法。我已经通过从右到左迭代输入 val 来解决它,同时测试 char 是逗号还是点。然后采取相应的行动。现在可以正常使用了!

    再次感谢,

    问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-22
      • 2021-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-13
      • 2011-07-24
      • 1970-01-01
      相关资源
      最近更新 更多