Typescript / Javascript-解析浮点数,逗号作为小数点分隔符

时间:2019-12-09 18:08:45

标签: javascript typescript parsing parsefloat

我有以下字符串:

const NumberAsString = "75,65";

我需要像这样将其解析为float:

Amount: parseFloat(NumberAsString);

我看过一些建议将comma替换为dot的帖子,当comma用作千位分隔符时效果很好。但是在这种情况下,comma用作小数点分隔符。如果我将其替换,则会得到以下数字:7.565,00,而不是我的数字75.65。有什么方法可以解析此数字以使其浮动而不更改其值?

PD:在我的系统中,我有一个助手,该助手使用带点的数字作为千位分隔符,以逗号作为小数分隔符。我无法避免这一点。

1 个答案:

答案 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)));