2012-06-26 66 views
0

可能重复:
JavaScript: formatting number with exactly two decimals格式化数字与JavaScript

能有人请帮我看看我的Java脚本?
我的java脚本一直算起来,问题是美分字符长度太长(最多需要2个字符)。另一个问题是,我不知道还有哪些代码需要将逗号放在正确的位置以确定适当的数量。例如:12345.67和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>​ 
+1

JavaScript数字是**浮点数**,因此严重不适用于货币计算。 – Pointy

+0

有一个名为[ToFixed]的javascript函数(http://www.w3schools.com/jsref/jsref_tofixed.asp),它可以完成你正在寻找的任务。 –

+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/

+0

它不工作 – Zach

+0

即时对不起,我似乎无法得到它的工作,即时确定我做错了=/ – Zach

+0

我想这个问题不会得到解决,我不知道如何处理您发送给我的代码,我只是要求一个小忙,转发完整的代码,但我想每个人都没有时间对我来说=/ – Zach

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));