我有以下字符串:
const NumberAsString = "75,65";
我需要像这样将其解析为float:
Amount: parseFloat(NumberAsString);
我看过一些建议将comma
替换为dot
的帖子,当comma
用作千位分隔符时效果很好。但是在这种情况下,comma
用作小数点分隔符。如果我将其替换,则会得到以下数字:7.565,00
,而不是我的数字75.65
。有什么方法可以解析此数字以使其浮动而不更改其值?
PD:在我的系统中,我有一个助手,该助手使用带点的数字作为千位分隔符,以逗号作为小数分隔符。我无法避免这一点。
答案 0 :(得分:0)
这是一个笨拙的方法。
使用数组和reduce
const tests = ['70,65', '7,000,01', '700'];
const parseNumber = (num) => {
if(num === undefined) return undefined;
if(num.indexOf(',') < 0) return parseFloat(num);
const numArr = num.split(',');
return parseFloat( numArr.reduce((a, v, i) => a + ((i === numArr.length - 1) ? `.${v}` : v), '') );
};
tests.forEach(t => console.log(parseNumber(t)));