zoukankan      html  css  js  c++  java
  • 财务金额大小写转换

    最近发现网上的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;
    
        }
    

      

  • 相关阅读:
    void及void指针含义的深刻解析
    对个人站长职业前景的探讨之路在何方?
    Swift编程语言学习4.3—— 控制语句
    二分查找
    分布式文件系统
    常见浏览器兼容性问题与解决方式
    OutputDebugString()
    眼睛的颜色
    SVM-支持向量机算法概述
    Android学习笔记(四十):Preference的使用
  • 原文地址:https://www.cnblogs.com/qiupiaohujie/p/12124048.html
Copyright © 2011-2022 走看看