CFXIXI工作室首页
CF西西的博客 | js 格式化数字金额

js 格式化数字金额

15. 四月 2013

转自:http://yafei.iteye.com/blog/728978

这个问题今天花了十分钟,好不容易找到一个,别人写的,分享一下。 

例如: 
12345格式化为12,345.00 
12345.6格式化为12,345.60 
12345.67格式化为 12,345.67 
只留两位小数。 

回来后写了个格式化函数。可以控制小数位数,自动四舍五入。 

代码如下: 

Java代码  收藏代码
  1. function fmoney(s, n)  
  2. {  
  3.    n = n > 0 && n <= 20 ? n : 2;  
  4.    s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";  
  5.    var l = s.split(".")[0].split("").reverse(),  
  6.    r = s.split(".")[1];  
  7.    t = "";  
  8.    for(i = 0; i < l.length; i ++ )  
  9.    {  
  10.       t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");  
  11.    }  
  12.    return t.split("").reverse().join("") + "." + r;  
  13. }  


调用:fmoney("12345.675910", 3),返回12,345.676 

还原函数: 

Java代码  收藏代码
  1. function rmoney(s)  
  2. {  
  3.    return parseFloat(s.replace(/[^\d\.-]/g, ""));  
  4. }  



示例(可保存一下代码为html文件,运行查看效果): 

Java代码  收藏代码
  1. <SCRIPT>  
  2. function fmoney(s, n)  
  3. {  
  4.    n = n > 0 && n <= 20 ? n : 2;  
  5.    s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";  
  6.    var l = s.split(".")[0].split("").reverse(),  
  7.    r = s.split(".")[1];  
  8.    t = "";  
  9.    for(i = 0; i < l.length; i ++ )  
  10.    {  
  11.       t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");  
  12.    }  
  13.    return t.split("").reverse().join("") + "." + r;  
  14. }  
  15. function rmoney(s)  
  16. {  
  17.    return parseFloat(s.replace(/[^\d\.-]/g, ""));  
  18. }  
  19. function g(id)  
  20. {  
  21.    return document.getElementById(id);  
  22. }  
  23. window.onload = function()  
  24. {  
  25.    var num,  
  26.    txt = g("txt"),  
  27.    txt2 = g("txt2"),  
  28.    btn = g("btn"),  
  29.    btn2 = g("btn2"),  
  30.    span = g("span");  
  31.    btn.onclick = function()  
  32.    {  
  33.       num = parseInt(g("num").value);  
  34.       txt.value = fmoney(txt.value, num);  
  35.       txt2.value = fmoney(txt2.value, num);  
  36.    }  
  37.    ;  
  38.    btn2.onclick = function()  
  39.    {  
  40.       num = parseInt(g("num").value);  
  41.       span.innerHTML = "=" + fmoney(rmoney(txt.value) + rmoney(txt2.value), num);  
  42.    }  
  43.    ;  
  44. }  
  45. ;  
  46. </SCRIPT>  
  47. 小数点位数:  
  48. <select id="num">  
  49. <option value="2">2</option>  
  50. <option value="3">3</option>  
  51. <option value="4">4</option>  
  52. <option value="5">5</option>  
  53. </select>  
  54. <input type="text" id="txt" value="12345.675910"> +  
  55. <input type="text" id="txt2" value="1223"> <span id="span"></span>  
  56. <br>  
  57. <input type="button" id="btn" value="格式化">  
  58. <input type="button" id="btn2" value="相加">  

javascript