2011-08-17 60 views
0

我正在使用下面的代码从起始数字开始计数。我需要的是在适当的位置插入逗号(数千),并在最后两位数前面加上一个小数点。添加逗号,十进制数字输出javascript

function createCounter(elementId,start,end,totalTime,callback) 
{ 
    var jTarget=jQuery("#"+elementId); 
    var interval=totalTime/(end-start); 
    var intervalId; 
    var current=start; 
    var f=function(){ 
     jTarget.text(current); 
     if(current==end) 
     { 
      clearInterval(intervalId); 
      if(callback) 
      { 
       callback(); 
      } 
     } 
     ++current; 
    } 
    intervalId=setInterval(f,interval); 
    f(); 
} 
jQuery(document).ready(function(){ 
    createCounter("counter",12714086+'',9999999999,10000000000000,function(){ 
     alert("finished") 
    }) 
}) 

在此执行:http://jsfiddle.net/blackessej/TT8BH/3/

+2

[本回答一个不同SO问题](http://stackoverflow.com/questions/1068284/format-numbers-in-javascript/1068299#1068299)可以帮助。 – sdleihssirhc

+0

您是要我们为您编写代码吗?为什么不先试一下,然后询问我们是否卡住了 – riwalk

回答

0

退房this page对切片的解释(),斯普利特(),和子(),以及其他String对象的功能。

var num = 3874923.12 + ''; //converts to a string 
numArray = num.split('.'); //numArray[0] = 3874923 | numArray[1] = 12; 

commaNumber = ''; 
i = numArray[0].length; 
do 
{ 
    //we don't want to start slicing from a negative number. The following line sets sliceStart to 0 if i < 0. Otherwise, sliceStart = i 
    sliceStart = (i-3 >= 0) ? i-3 : 0; 

    //we're slicing from the right side of numArray[0] because i = the length of the numArray[0] string. 
    var setOf3 = numArray[0].slice(sliceStart, i); 

    commaNumber = setOf3 + ',' + commaNumber; //prepend the new setOf3 in front, along with that comma you want 

    i -= 3; //decrement i by 3 so that the next iteration of the loop slices the next set of 3 numbers 
} 
while(i >= 0) 

//result at this point: 3,874,923, 

//remove the trailing comma 
commaNumber = commaNumber.substring(0,commaNumber.length-1); 

//add the decimal to the end 
commaNumber += '.' + numArray[1]; 

//voila! 
+0

谢谢@maxedison。问题是,我还没有熟练掌握JavaScript ......我相信我已经采取了正确的步骤将我的号码转换为字符串 - http://jsfiddle.net/blackessej/TT8BH/3/,但我不确定该从哪里出发。 – blackessej

1
var s = 121221; 

使用功能insertDecimalPoints(s.toFixed(2));

,你会得到1,212.21

function insertDecimalPoints(s) { 
    var l = s.length; 
    var res = ""+s[0]; 
    console.log(res); 
    for (var i=1;i<l-1;i++) 
    { 
     if ((l-i)%3==0) 
      res+= ","; 
     res+=s[i]; 
    } 
    res+=s[l-1]; 

    res = res.replace(',.','.'); 

    return res; 
} 
0

该功能可用于如果没有区域合作体节
数= 1000.234; number = insertDecimalPoints(number.toFixed(3));

function insertDecimalPoints(s) { 
    console.log(s); 
    var temaparray = s.split("."); 
    s = temaparray[0]; 
    var l = s.length; 
    var res = ""//+s[0]; 
    console.log(res); 
    for (var i=0;i<l-1;i++) 
    { 
     if ((l-i)%3==0 && l>3) 
      res+= ","; 
     res+=s[i]; 
    } 
    res+=s[l-1]; 
    res =res +"."+temaparray[1]; 
    return res; 
} 
0
function convertDollar(number) { 
    var num =parseFloat(number); 
    var n = num.toFixed(2); 
    var q =Math.floor(num); 
    var z=parseFloat((num).toFixed(2)).toLocaleString(); 
    var p=(parseFloat(n)-parseFloat(q)).toFixed(2).toString().replace("0.", "."); 
    return z+p; 
}