【问题标题】:Typescript/Javascript - Parse float with comma as decimal separator [duplicate]Typescript / Javascript - 用逗号作为小数分隔符解析浮点数[重复]
【发布时间】:2019-12-10 02:20:52
【问题描述】:

我有以下字符串:

const NumberAsString = "75,65";

我需要像这样将它解析为浮点数:

Amount: parseFloat(NumberAsString);

我看到一些帖子建议用dot 替换comma,当comma 用作千位分隔符时效果很好。但在这种情况下,comma 用作小数分隔符如果我替换它,我会得到这个号码:7.565,00,这不是我的号码75.65。有没有什么办法可以解析这个数字来浮动而不改变它的值?

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

【问题讨论】:

  • 我不知道问题中7.565,00 号码的来源。
  • 正如我所说,如果我这样做,数字会改变,在我的系统中,点用于千位,逗号用于小数
  • . 是否用作千位分隔符?你是怎么得到7.565,00的?
  • 我将编辑帖子,在我的系统中,我有一个函数助手来转换 .作为千位分隔符和逗号作为小数分隔符,我无法避免这种转换

标签: javascript typescript parsing parsefloat


【解决方案1】:

这是一种笨拙的方法。 使用数组和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)));

【讨论】:

    猜你喜欢
    • 2019-12-30
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 2013-08-26
    • 1970-01-01
    • 2017-09-30
    相关资源
    最近更新 更多