zoukankan      html  css  js  c++  java
  • JS格式化金额样式

    格式化金额-四舍五入(这个方法有bug)

     1 function number_format(number, decimals, dec_point, thousands_sep) {
     2     /*
     3     * 参数说明:
     4     * number:要格式化的数字
     5     * decimals:保留几位小数
     6     * dec_point:小数点符号
     7     * thousands_sep:千分位符号
     8     * */
     9     number = (number + '').replace(/[^0-9+-Ee.]/g, '');
    10     var n = !isFinite(+number) ? 0 : +number,
    11         prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
    12         sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
    13         dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
    14         s = '',
    15         toFixedFix = function (n, prec) {
    16             var k = Math.pow(10, prec);
    17             return '' + Math.ceil(n * k) / k;
    18         };
    19 
    20     s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    21     var re = /(-?d+)(d{3})/;
    22     while (re.test(s[0])) {
    23         s[0] = s[0].replace(re, "$1" + sep + "$2");
    24     }
    25 
    26     if ((s[1] || '').length < prec) {
    27         s[1] = s[1] || '';
    28         s[1] += new Array(prec - s[1].length + 1).join('0');
    29     }
    30     return s.join(dec);
    31 }

    使用:

    1 var num=number_format(1234567.089, 2, ".", ",");//1,234,567.09
    var num=number_format(2.2, 2, ".", ",");//2.21
    总会加上0.01,记录下,不建议使用

    格式化-直接舍去(可用)

     1 function number_format(number, decimals, dec_point, thousands_sep) {
     2         /*
     3         * 参数说明:
     4         * number:要格式化的数字
     5         * decimals:保留几位小数
     6         * dec_point:小数点符号
     7         * thousands_sep:千分位符号
     8         * */
     9         number = (number + '').replace(/[^0-9+-Ee.]/g, '');
    10         var n = !isFinite(+number) ? 0 : +number,
    11 
    12             prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
    13             sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
    14             dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
    15             s = '',
    16             toFixedFix = function (n, prec) {
    17                 var k = Math.pow(10, prec);
    18                 return '' + Math.floor(n * k) / k;
    19             };
    20         s = (prec ? toFixedFix(n, prec) : '' + Math.floor(n)).split('.');
    21         var re = /(-?d+)(d{3})/;
    22         console.log(s)
    23         while (re.test(s[0])) {
    24             s[0] = s[0].replace(re, "$1" + sep + "$2");
    25         }
    26 
    27         if ((s[1] || '').length < prec) {
    28             s[1] = s[1] || '';
    29             s[1] += new Array(prec - s[1].length + 1).join('0');
    30         }
    31         return s.join(dec);
    32     }
    33     number_format(1234567.089, 2, ".", ",");//1,234,567.08

     格式化-四舍五入(可用)

    function fmoney(s, n) {
      n = n > 0 && n <= 20 ? n : 2;
      s = parseFloat((s + "").replace(/[^d.-]/g, "")).toFixed(n) + "";
      let l = s.split(".")[0].split("").reverse(),
        r = s.split(".")[1];
      let t = "";
      for (let i = 0; i < l.length; i++) {
        t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
      }
      return t.split("").reverse().join("") + "." + r;
    }
    
    function rmoney(s) {
      return parseFloat(s.replace(/[^d.-]/g, ""));
    }
    

      

  • 相关阅读:
    数字音乐均衡器
    移植x264到vs2008之二
    无线连接频繁掉线,解决方法之telnet命令突破ddwrt端口最大数连接限制分析
    最新开发的消费平台开发过程 持续更新(二)
    .net 4.0 下请求验证模式变化 应对方法
    DDWRT无线参数解读
    利用 Application_Error 捕获所有异常
    location.reload() 和 location.replace()的区别和应用
    纯CSS 实现组织架构图,学习
    Syslog架设windows日志服务器
  • 原文地址:https://www.cnblogs.com/linqing001/p/14036554.html
Copyright © 2011-2022 走看看