使用javascript格式化数字

时间:2012-06-26 01:27:15

标签: javascript

  

可能重复:
  JavaScript: formatting number with exactly two decimals

有人可以帮我解决我的java脚本吗? 我的java脚本一直都很重要,问题是美分字符长度太长(最多需要2个字符)。另一个问题是,我不知道还需要什么代码才能将逗号放在正确的位置以确定适当的数量。示例:12345.67 vs 12,345.67。如果有人可以看看代码,修改它并重新发布完整的代码,因为我不知道该怎么做,我会非常感激。

这是javascript代码:http://jsfiddle.net/pqsH6/


<p style="float:left;">Money Saved: </p><b><p id="ds"  style="float:left;">$</p></b>
<div id="counter" style="float:left;"></div>

<script type="text/javascript">
    var START_DATE = new Date("january 1, 2012 12:00:00"); // put in the starting date here   
    var INTERVAL = 1000; // savings per second
    var INCREMENT = 0.005; // money saved per second
    var START_VALUE = -50000; // configures proper savings calculation
    var count = 0;
    window.onload = function()
    {
        var msInterval = INTERVAL * 1;
        var now = new Date();
        count = parseInt((now - START_DATE)/msInterval) * INCREMENT + START_VALUE;
        document.getElementById('counter').innerHTML = count;
        setInterval("count += INCREMENT; document.getElementById('counter').innerHTML = count;", msInterval);
    }
</script>​

2 个答案:

答案 0 :(得分:1)

这看起来像是一种使用Javascript格式化输出的方法:

How to print a number with commas as thousands separators in JavaScript

function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

只需将您的数字作为参数传递给函数,它将返回逗号分隔的数字。

这是另一个可用于舍入到两位小数的函数:

function formatCurrency(num) {
    num = isNaN(num) || num === '' || num === null ? 0.00 : num;
    return parseFloat(num).toFixed(2);
}

然后使用像这样的功能

var roundedCurrencyAmt = numberWithCommas(formatCurrency(amtOfMoney));

这是一个有效的jsFiddle:http://jsfiddle.net/alexfromapex/Y2x8m/2/

答案 1 :(得分:0)

只是评论:

> var START_DATE = new Date("january 1, 2012 12:00:00");

依赖于正确解析字符串的内置Date函数,但ECMA-262仅指定Date应该解析的one format(ISO8601的一个版本),而不是它。但并非所有使用的浏览器都支持这种格式。

最好使用specified并且已知可在任何地方工作的内容,例如:

var START_DATE = new Date(2012,0,1,12);

将在所有浏览器的本地时区创建2012-01-01 12:00:00的新日期,或者如果需要UTC

var START_DATE = new Date(Date.UTC(2012,0,1,12));