JavaScript中的货币格式[重复]
Posted
技术标签:
【中文标题】JavaScript中的货币格式[重复]【英文标题】:Currency Formatting in JavaScript [duplicate] 【发布时间】:2013-01-06 04:58:36 【问题描述】:可能重复:How can I format numbers as money in 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">£ <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>
【问题讨论】:
你应该看看这个库josscrowcroft.github.com/accounting.js 使用小数浮点数表示货币值是个坏主意。 @cdhowie 所以你希望用户输入一个整数,代表美分,而不是美元(磅)?您还希望如何做到这一点? @Ian 例如,必须编写一个将"123.45"
解析为12345
的函数。这并不难做到。
@cdhowie 那又怎样,return parseInt(parseFloat(input)*100);
?
【参考方案1】:
可以使用标准的JStoFixed
方法
var num = 5.56789;
var n=num.toFixed(2);
//5.57
为了添加逗号(以分隔 1000's),您可以按如下方式添加正则表达式(其中 num
是一个数字):
num.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")
//100000 => 100,000
//8000 => 8,000
//1000000 => 1,000,000
完整示例:
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
分隔符取决于国家和地区。对于某些国家/地区,可能需要.
【讨论】:
也许下面的正则表达式更好:/(\d)(?=(\d3)+$)/g
.
谢谢,这正是我想要的!
顺便说一句,toString()
不需要 toFixed(2)
,因为后者返回字符串。
另一种方法是使用value.toLocaleString()
,它根据语言环境将浮点数解析为字符串。
我不太懂正则表达式,但你是怎么做到的 (12,23,988)【参考方案2】:
您可以使用 Number 类型的 toPrecision() 和 toFixed() 方法。检查此链接How can I format numbers as money in JavaScript?
【讨论】:
以上是关于JavaScript中的货币格式[重复]的主要内容,如果未能解决你的问题,请参考以下文章