jQuery仅在小数点后留下两个数字

时间:2019-03-10 14:22:42

标签: javascript jquery math decimal

现在找了一段时间,大多数问题都包含我尝试过的相同答案,但对我的情况不起作用,因此,为什么要发布此内容。现在我的脚本返回了几个数字,我想将这些数字和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个数字?

预先感谢

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

使用正则表达式

'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));
});