现在找了一段时间,大多数问题都包含我尝试过的相同答案,但对我的情况不起作用,因此,为什么要发布此内容。现在我的脚本返回了几个数字,我想将这些数字和2个数字保留在小数点后,现在的问题是我还有另一个脚本在这些数字上添加了逗号,因此,例如,我可能得到以下数字。
56,883.90,607,219,945
5,327.078,363,188,421
1688.7000000000003
2,739.272
现在我已经尝试了几种方法,包括Number(number).toFixed(2)
等。但是,例如,它会切断某些部分。
"56.00"
,而我需要它返回56,883.90
"5.00"
,而我需要5,327.07
"1688.70"
"2.00"
而不是2,739.27
现在我知道问题出在哪里了,它需要用逗号然后将数字变成数字,是否有办法专门在DOT之后仅抓取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));
});