toLocaleString 价格不带小数点零
toLocaleString price without decimal zeroes
我想知道如何在保留 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 来说明我的问题,这使得使用代码变得容易。
您可以添加一个函数来检查数字是否为整数,并在 localePrice 函数中使用一个条件来应用您的格式(使用 slice 来删除小数点):
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);
尝试将 minimumFractionDigits: 0
添加到您的选项中,例如:
const currency = 'EUR';
const language = 'NL';
var localePrice = (amount) => {
const options = {
style: 'currency',
currency: currency,
minimumFractionDigits: 0
};
return amount.toLocaleString(language, options);
}
我想知道如何在保留 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 来说明我的问题,这使得使用代码变得容易。
您可以添加一个函数来检查数字是否为整数,并在 localePrice 函数中使用一个条件来应用您的格式(使用 slice 来删除小数点):
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);
尝试将 minimumFractionDigits: 0
添加到您的选项中,例如:
const currency = 'EUR';
const language = 'NL';
var localePrice = (amount) => {
const options = {
style: 'currency',
currency: currency,
minimumFractionDigits: 0
};
return amount.toLocaleString(language, options);
}