JavaScript中的货币格式

kev*_*evg 34 javascript jquery

可能重复:
如何在JavaScript中将数字格式化为金钱?

我有一个简单的JavaScript表单来执行即时计算.我的问题是我正在努力格式化它,以便用逗号和2位小数正确显示.

任何帮助将非常感谢.谢谢.

    <p>
    <label>My Daily Rate is:</label><br />
<input class="poundsBox" name="shares" id="shares" type="text" /><br />
<br />
<strong>Your Gross Contract Take Home:</strong></p>
<p><span class="result">&pound; <span id="result"></span></span></p>
The above illustration is provided for guidance only. Please complete the request form below for a detailed personal illustration.

<script type="text/javascript">
$("#shares").keyup(function() {
   var val = parseFloat($(this).val());
   // If val is a good float, multiply by 260, else show an error
   val = (val ? val * 260 * 0.88 : "Invalid number");
   $("#result").text(val);
})
</script>
Run Code Online (Sandbox Code Playgroud)

Tom*_*Tom 109

您可以使用标准的JS toFixed方法

var num = 5.56789;
var n=num.toFixed(2);

//5.57
Run Code Online (Sandbox Code Playgroud)

为了添加逗号(分隔1000个),您可以按如下方式添加正则表达式(其中num是数字):

num.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")

//100000 => 100,000
//8000 => 8,000
//1000000 => 1,000,000
Run Code Online (Sandbox Code Playgroud)

完整的例子:

var value = 1250.223;
var num = '$' + value.toFixed(2).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");

//document.write(num) would write value as follows: $1,250.22
Run Code Online (Sandbox Code Playgroud)

分离字符取决于国家和地区.对于某些国家,它可能需要.

  • 也许以下正则表达式更好:`/(\ d)(?=(\ d {3})+ $)/ g`. (7认同)
  • 另一种方法是使用`value.toLocaleString()`,它根据locale将float解析为string. (7认同)
  • 顺便说一句,当你执行`toFixed(2)`时,`toString()`没有必要,因为后者返回字符串. (4认同)