【问题标题】:Jquery leave only two numbers after decimal pointjquery只保留小数点后两个数字
【发布时间】:2019-03-10 22:48:20
【问题描述】:

现在一直在寻找这个,大多数问题都包含我尝试过的相同答案,但它不适用于我的情况,因此我发布这个。现在我的脚本返回了几个数字,我想在小数点后留下这些数字和 2 个数字,现在的问题是我有另一个脚本可以为这些数字添加逗号,例如,我可能会得到以下数字。

56,883.90,607,219,945
5,327.078,363,188,421
1688.7000000000003
2,739.272

现在我已经尝试了几个东西,包括Number(number).toFixed(2)等。但它会切断一些部分,例如。

  1. 上面的第一个数字将返回>"56.00",而我需要它返回56,883.90
  2. 会返回 > "5.00",而我需要 5,327.07
  3. 会返回我所期待的"1688.70"
  4. 将返回 "2.00" 而不是 2,739.27

现在我明白问题出在哪里了,它需要逗号和后面的数字,有没有办法专门在 DOT 之后只抓取 2 个数字?

提前致谢

【问题讨论】:

  • 56,883.90,607,219,945 这不是一个有效的数字?第二个5,327.078,363,188,421也是如此。是否有理由将数字格式化为这样?那是因为这根本不是数字的表示方式。查看生成这些脚本/逻辑的任何脚本/逻辑,然后修复它:这对我来说就像一个 XY 问题。
  • 一旦出现逗号,它们就不再是数字,而是字符串,因此您必须使用正则表达式来解决问题。
  • Number("56,883.90") 会因为逗号而返回 NaN
  • var number = "56,883.90,607,219,945".split(",", 2); alert(number);
  • @Terry 是的,我会解决的,对此感到抱歉。它基本上是一个在每 3 个数字后添加逗号的脚本。但是回到轨道上,如果数字是例如 5,327.078 并且我使用 Number(5,327.078).toFixed(2);它仍然会返回 5.00

标签: javascript jquery math decimal


【解决方案1】:

使用正则表达式

'56,883.90,607,219,945'.replace(/(\..{2}).*/,'$1')

符合您所有预期的结果:

56,883.90,607,219,945  => 56,883.90
5,327.078,363,188,421  => 5,327.07
1688.7000000000003     => 1688.70 (it will not add comma)
2,739.272              => 2,739.27

function changeToNumber(str) {
  return str.replace(/(\..{2}).*/, '$1');
}

var input = ['56,883.90,607,219,945',
  '5,327.078,363,188,421',
  '1688.7000000000003',
  '2,739.272'
]

input.forEach(function(value) {
  console.log(changeToNumber(value));
});

【讨论】:

    【解决方案2】:

    您必须从数字字符串中删除 , 才能解析完整的数字。使用String#replace 方法从字符串中删除,

    Number('5,327.078'.replace(/,/g, ''))
    

    console.log(Number('5,327.078'.replace(/,/g, '')).toFixed(2));

    【讨论】:

      猜你喜欢
      • 2010-11-20
      • 2020-09-11
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 2022-12-07
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多