Javascript显示货币不四舍五入
Posted
技术标签:
【中文标题】Javascript显示货币不四舍五入【英文标题】:Javascript display currency without rounding 【发布时间】:2017-11-09 02:40:34 【问题描述】:我在 javascript 中显示货币值,我想在每个值上显示 $,我还想要 ,(逗号)为数千,但我不希望小数点后的数字四舍五入,我也没有固定的小数点后位数的限制。
这是为en-AU
例如
45000 -> 45,000 美元
3.6987 -> 3.6987 美元
3 -> $3
4.00 -> 4.00 美元
是否有任何内置的 JavaScript 方法或库可以帮助实现这一点?
【问题讨论】:
这是一个问答网站。问题是什么?您在哪里尝试自己解决这个问题? 向我们展示你想要所有这些东西的代码? How can I format numbers as dollars currency string in JavaScript?的可能重复 美国 icurrency 的小数位不超过 2 位,因此$3.6987
不是有效的货币金额,不应显示为 1。最小的美国货币是 1 美分(1 美元的 1/100),将显示为 $0.01
。多于两位小数只会让人们感到困惑,因为您假装某物是不是货币的金额。
【参考方案1】:
我建议使用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 */
【讨论】:
@Ali 我更新了答案,使用 maximumFractionDigits 并给它 20 的数量,同时给 minimumFractionDigits 值 0【参考方案2】:您可以使用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
与this question相关。
【讨论】:
var number = 3.6987; number.toLocaleString() 返回我不想要的 $3.699。 您可以使用minimumFractionDigits
属性来解决这个问题。
它不适用于minimumFractionDigits
集。即使该值被四舍五入。【参考方案3】:
看看accounting.js,它具有将值格式化为货币格式的强大功能。
【讨论】:
accounting.js 中的第一个示例在末尾显示了 2 个额外的零,这是我不想要的。会计.formatMoney(12345678); // $12,345,678.00 使用精度设置增加限制以上是关于Javascript显示货币不四舍五入的主要内容,如果未能解决你的问题,请参考以下文章
PHP number_format():将数字四舍五入,然后格式化为货币