• 财务金额大小写转换


    最近发现网上的JS对金额小写转换为大写的脚本,多多少少都有些问题。例如有的 2020.12,会显示为 ***壹角贰分;

    其它的也有部分问题,改进后如下:

    smalltoBIG: function (amount) {
            if (isNaN(amount) || amount >= 1000000000000) return "无效金额!";  //数值最大不超过1万亿
            var sPrefix = amount < 0 ? "(负)" : "";                             //将负号‘-’显示成汉字‘(负)’
            var sAmount = Math.abs(amount).toFixed(2);                          //格式化成两位小数格式(两位小数对应“'角”和“分”)
            var sUnit = '仟佰拾亿仟佰拾万仟佰拾元角分';                         //14个权位单位
            var sCapital = '零壹贰叁肆伍陆柒捌玖';                              //10个大写数字
            sAmount = sAmount.replace(".", "");                                 //去除小数点(使数字与权位对应)
            sUnit = sUnit.substr(sUnit.length - sAmount.length);                //截取权位
            var sOutput = "";
            for (var i = 0, len = sAmount.length; i < len; i++) {               //拼接数字与权位单位
                sOutput += sCapital.substr(sAmount.substr(i, 1), 1) + sUnit.substr(i, 1);
    
            }
           
            var r1 = sPrefix + sOutput.replace(/零角零分$/, '整').replace(/零[仟佰拾]/g, '零').replace(/零{2,}/g, '零').replace(/零([亿|万])/g, '$1').replace(/零+元/, '元').replace(/亿零{0,3}万/, '亿').replace(/^元/, "零元").replace(/零分/, "");
            //对零元、零角、零分进行处理
            r1 = r1.replace("零元", "").replace("零角", "零").replace("零分", "");
            //对特殊情况处理
            if (r1 == "整")   // 0,显示为“整”
                r1 = "零元整";
            else if (r1.indexOf("零") == 0) //  0.01 显示为“零壹份”
                r1 = r1.substr(1);
    
            return r1;
    
        }
    

      

  • 相关阅读:
    oracle中统计邮箱的总类
    java中形参的值传递
    There is no Action mapped for action name的解决方法
    java操作excel
    验证邮箱地址是否真实有效
    Tomcat服务器内外网通过IP地址都不能访问
    HashMap遍历的两种方式(转)
    用java实现栈
    oracle中利用merge语句防止重复插入
    sshkeyken 中文手册
  • 原文地址:https://www.cnblogs.com/qiupiaohujie/p/12124048.html
Copyright © 2020-2023  润新知