Javascript显示货币而不进行四舍五入

问题描述 投票:0回答:4

我在javascript中显示货币值,我想显示每个值的$,我也想要,(逗号)代表数千,但我不想对小数点后的数字进行四舍五入,而且我也没有固定的限制小数点后有多少位。

适用于 en-AU

例如

45000 -> 45,000 美元

3.6987 -> 3.6987 美元

3 -> 3 美元

4.00 -> $4.00

有没有内置的JavaScript方法或库可以帮助实现这一点?

javascript currency
4个回答
7
投票

我建议使用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 */

4
投票

您可以使用

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 });

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString

此问题相关。


1
投票

看看accounting.js,它具有以货币格式格式化值的强大功能。


0
投票

这对我有用: 您需要截断。

var num = parseFloat(15.7784514);

var formatted = new Intl.NumberFormat("en-US", {style: "currency",currency: "USD", roundingMode: "trunc"}).format(v)

© www.soinside.com 2019 - 2024. All rights reserved.