在JavaScript.00中设置货币格式

在JavaScript.00中设置货币格式,javascript,string,format,currency-formatting,Javascript,String,Format,Currency Formatting,我目前正在使用以下代码格式化数字以显示为货币值: return symbol + value.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,"); 其中符号为、$等,值为一个有许多小数位的数字。这非常有效,但我现在想删除尾部.00(如果存在) 目前我有以下输出: 1.23454 => £1.23 1 => £1.00 50.00001 => £50.00 2.5 => £2.50 我希望: 1.23454 => £1

我目前正在使用以下代码格式化数字以显示为货币值:

return symbol + value.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,");
其中符号为、$等,值为一个有许多小数位的数字。这非常有效,但我现在想删除尾部
.00
(如果存在)

目前我有以下输出:

1.23454 => £1.23
1 => £1.00
50.00001 => £50.00
2.5 => £2.50
我希望:

1.23454 => £1.23
1 => £1
50.00001 => £50
2.5 => £2.50
有没有比以下更干净的方法:

var amount = symbol + value.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,");
return amount.replace(".00", "");
或者这是最好的解决办法

var value = 1.23454;
var symbol = '£';
value = value.toFixed(2);
var amount = symbol + value.replace(/(\d)(?=(\d{3})+\.)/g, "$1,");
alert(amount.replace(".00", ""));

请按照@RobG的建议将值更改为test

,我可以使用:

symbol + value.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").replace(/\.00/g, '')
调查。这是一个非常方便的本机api

let number=1.23454;
console.log(新的Intl.NumberFormat('en-GB'){
风格:“货币”,
货币:英镑
}).格式(编号)。替换(/(\.|,)00$/g,);
// → 1.23
您可以通过将
最大有效位数设置为数字整数部分的位数,将货币四舍五入到最接近的美元(或英镑或其他任何货币)

let number=999.50;
console.log(新的Intl.NumberFormat('en-US'){
风格:“货币”,
货币:美元,
最大有效位数:Math.trunc(Math.abs(number)).toFixed().length,

}).格式(编号));//$1000(因50美分而四舍五入)
您的“最佳”标准是什么?如果该值是分数,我想显示美分/便士,只有当美分/便士为0时,我才想删除后面的零。我会用更多的例子来更新这个问题,告诉我
symbol+value.toFixed(2).替换(/\.00/g.)
应该可以。@RobG效果很好,谢谢。仅供参考,
Number.prototype.toLocaleString
对你有帮助。这不适用于所有地区,某些语言。这不适用于所有地区,某些语言。