将数字转换为数字和量词

时间:2018-11-30 10:47:11

标签: javascript regex

我将如何将1200000转换为120万英镑,又如何将2675000转换为267.5万英镑

我可以让第二个投入工作,但第一个收益为1200万英镑而不是120万英镑

我的数字在变量中。

salePrice.toString().replace(/0+$/g, '').replace(/\B(?=(\d{3})+(?!\d))/g, '.')}m

我将如何更改第二个替换以使其起作用,因为我猜这是导致问题的原因。

只要通过了

1200000 1220000 1222000 1222200 1222220 1222222 1020000 1022200

等等,所有这些都必须能够通过。

2 个答案:

答案 0 :(得分:1)

您有Number.prototype.toFixed()选项可用。

  const data = [
    2675000,
    1200000,
    1220000,
    1222000,
    1222200,
    1222220,
    1222222,
    1020000,
    1022200
  ];

const formatted = data.map(x=> (x/1000000).toFixed(3).replace(/0+$/g, '')); // ["2.675", "1.2", "1.22", "1.222", "1.222", "1.222", "1.222", "1.02", "1.022"]

我没有将零件包括在货币中,因为您已经知道了。 Shilly的答案真的很美。我只是在提出另一种解决方案,它要短一些。

答案 1 :(得分:0)

您将它们除以所需的精度。我建议尽量将数字保留为数字,因为用作数字的字符串遵循文本规则而不是数学规则,因此您除了将输出格式化外,还必须将它们解析回数字以执行有意义的工作。

const data = [
  2675000,
  1200000,
  1220000,
  1222000,
  1222200,
  1222220,
  1222222,
  1020000,
  1022200
];

const format_currency = ( prefix, value, precision, suffix ) => `${ prefix }${ value / precision }${ suffix }`;

const million = {
  symbol: 'm',
  value: 1000000
};

const pounds = '£';

const results = data.map( entry => format_currency( pounds, entry, million.value, million.symbol ));

console.log( results );