将数字四舍五入到货币格式的正好两位小数

use*_*474 8 javascript currency rounding

我需要四舍五入到小数位数的货币.

Math.round(num*Math.pow(10,2))/Math.pow(10,2)
Run Code Online (Sandbox Code Playgroud)

Math.round(num*Math.pow(10,2))/Math.pow(10,2)
Run Code Online (Sandbox Code Playgroud)

工作,除了它削减任何尾随零关闭,所以我得到29.9而不是29.90.

围绕这个最好的方法是什么?

Vyt*_*lyi 19

您可以将其添加到要设置特定格式的数字

.toFixed(2)
Run Code Online (Sandbox Code Playgroud)

  • `toFixed(2)`对于货币格式化并不好,因为它有时会向上舍入一半,有时会向下舍入一半.例如``(0.615).toFixed(2)`给出'0.61`(半下),而`(0.625)`给'0.63`(半上). (5认同)
  • @Vytalyi 的回答绝对没问题。.toFixed 遵循 Mathematics 中所述的四舍五入原则。如果奇数在数字 5 前面加上前缀,则会发生截断,否则会四舍五入。 (2认同)
  • @kaiser,它使用银行家的四舍五入:https://en.wikipedia.org/wiki/Rounding#Round_half_to_even (2认同)

xda*_*azz 7

(Math.round(num*Math.pow(10,2))/Math.pow(10,2)).toFixed(2)
Run Code Online (Sandbox Code Playgroud)