我在javascript中显示货币值,我想显示每个值的$,我也想要,(逗号)代表数千,但我不想对小数点后的数字进行四舍五入,而且我也没有固定的限制小数点后有多少位。
适用于 en-AU
例如
45000 -> 45,000 美元
3.6987 -> 3.6987 美元
3 -> 3 美元
4.00 -> $4.00
有没有内置的JavaScript方法或库可以帮助实现这一点?
我建议使用Intl.NumberFormat
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
});
formatter.format(3242); /* $3,242.00 */
您可以配置您的 FractionDigits 甚至货币符号:
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'GBP',
minimumFractionDigits: 4,
});
formatter.format(3242); /* £3,242.0000 */
更新:
如果您无法固定小数位数,您可以使用
maximumFractionDigits
并给它一个数量 20 并给 minimumFractionDigits
值 0 :
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'GBP',
minimumFractionDigits: 0,
maximumFractionDigits: 20,
});
formatter.format(3242.5454); /* £3,242.5454 */
您可以使用
toLocaleString
将逗号添加到数字中。
var number = 45000;
var formatted = '$' + number.toLocaleString(); // $45,000
number = 500999.12345;
formatted = '$' + number.toLocaleString(); // $500,999.12345
编辑:为了防止舍入,请使用
minimumFractionDigits
选项:
number.toLocaleString(undefined, { minimumFractionDigits: 20 });
与此问题相关。
看看accounting.js,它具有以货币格式格式化值的强大功能。
这对我有用: 您需要截断。
var num = parseFloat(15.7784514);
var formatted = new Intl.NumberFormat("en-US", {style: "currency",currency: "USD", roundingMode: "trunc"}).format(v)