財務金額大小寫轉換


最近發現網上的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;

    }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM