Chinaunix首页 | 论坛 | 博客
  • 博客访问: 449335
  • 博文数量: 141
  • 博客积分: 211
  • 博客等级: 入伍新兵
  • 技术积分: 1049
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-17 16:25
个人简介

如此经年,望尽千帆。

文章分类

全部博文(141)

文章存档

2014年(73)

2013年(65)

2012年(3)

我的朋友

分类: JavaScript

2014-03-29 21:26:37

JS格式化数字金额只留两位小数。写了个格式化函数。
可以控制小数位数,自动四舍五入。

js的实例详解。

例如: 
12345格式化为12,345.00 
12345.6格式化为12,345.60 
12345.67格式化为 12,345.67 
只留两位小数。 
回来后写了个格式化函数。可以控制小数位数,自动四舍五入。 
代码: 

  1. function fmoney(s, n) {
  2. n = n > 0 && n <= 20 ? n : 2;
  3. s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
  4. var l = s.split(".")[0].split("").reverse(), r = s.split(".")[1];
  5. t = "";
  6. for (i = 0; i < l.length; i++) {
  7. t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
  8. }
  9. return t.split("").reverse().join("") + "." + r;
  10. }
调用:fmoney("12345.675910", 3),返回12,345.676 
还原函数: 

  1. function rmoney(s) {
  2. return parseFloat(s.replace(/[^\d\.-]/g, ""));
  3. }
示例(可保存一下代码为html文件,运行查看效果): 

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

  1. /*
  2. * formatMoney(s,type)
  3. * 功能:金额按千位逗号分割
  4. * 参数:s,需要格式化的金额数值.
  5. * 参数:type,判断格式化后的金额是否需要小数位.
  6. * 返回:返回格式化后的数值字符串.
  7. */
  8. function formatMoney(s, type) {
  9. if (/[^0-9\.]/.test(s))
  10. return "0";
  11. if (s == null || s == "")
  12. return "0";
  13. s = s.toString().replace(/^(\d*)$/, "$1.");
  14. s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");
  15. s = s.replace(".", ",");
  16. var re = /(\d)(\d{3},)/;
  17. while (re.test(s))
  18. s = s.replace(re, "$1,$2");
  19. s = s.replace(/,(\d\d)$/, ".$1");
  20. if (type == 0) {// 不带小数位(默认是有小数位)
  21. var a = s.split(".");
  22. if (a[1] == "00") {
  23. s = a[0];
  24. }
  25. }
  26. return s;
  27. }
  28. /*
  29. * 通用DateAdd(interval,number,date) 功能:实现javascript的日期相加功能.
  30. * 参数:interval,字符串表达式,表示要添加的时间间隔. 参数:number,数值表达式,表示要添加的时间间隔的个数. 参数:date,时间对象.
  31. * 返回:新的时间对象. var now = new Date(); var newDate = DateAdd("day",5,now);
  32. * author:devinhua(从○开始) update:2010-5-5 20:35
  33. */
  34. function DateAdd(interval, number, date) {
  35. if (date == null)
  36. return "";
  37. switch (interval) {
  38. case "day":
  39. date = new Date(date);
  40. date = date.valueOf();
  41. date += number * 24 * 60 * 60 * 1000;
  42. date = new Date(date);
  43. return date;
  44. break;
  45. default:
  46. return "";
  47. break;
  48. }
  49. }
原文参考:
阅读(2893) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~