toLocaleString没有小数零的价格

时间:2017-09-15 09:27:16

标签: javascript formatting numbers locale currency

我想知道如何有效地从价格中删除小数零,同时保留2位小数,如果有

因此,如果价格为135.00,则应为135

如果价格为135.30,则应保留两位小数。

如果价格为135.38,则可以保留小数。

这就是我现在所拥有的:

const currency = 'EUR';
const language = 'NL';

var localePrice = (amount) => {
  const options = {
    style: 'currency',
    currency: currency
  };

  return amount.toLocaleString(language, options);
}

现在我可以使用正则表达式或类似的东西,但我希望有一种更简单的方法来完成这项工作。

我已经制作了一个JSFiddle来说明我的问题,这使得使用代码变得容易。

https://jsfiddle.net/u27a0r2h/2/

2 个答案:

答案 0 :(得分:1)

您可以添加一个函数来检查数字是否为整数,并使用localePrice函数中的条件来应用格式化(使用切片来删除小数):

function isInt(n) {
   return n % 1 === 0;
}

const currency = 'EUR';
const language = 'NL';


var localePrice = (amount) => {
  const options = {
    style: 'currency',
    currency: currency
  };

  if (isInt(amount)){
    return amount.toLocaleString(language, options).slice(0, -3);
  }
  else {
    return amount.toLocaleString(language, options);
  }
}

document.querySelector('.price').innerHTML = localePrice(135.21);

document.querySelector('.price-zeroes').innerHTML = localePrice(135.00);

document.querySelector('.price-with-one-zero').innerHTML = localePrice(135.30);

答案 1 :(得分:1)

尝试仅将minimumFractionDigits: 0添加到您的选项中,例如:

const currency = 'EUR';
const language = 'NL';

var localePrice = (amount) => {
  const options = {
    style: 'currency',
    currency: currency,
    minimumFractionDigits: 0
  };

  return amount.toLocaleString(language, options);
}