用JavaScript將數(shù)字轉(zhuǎn)換為大寫金額

原文[ 天涯孤雁]http://www.css88.com/archives/5900

var digitUppercase = function(n) {
    var fraction = ['角', '分'];
    var digit = [
        '零', '壹', '貳', '叁', '肆',
        '伍', '陸', '柒', '捌', '玖'
    ];
    var unit = [
        ['元', '萬', '億'],
        ['', '拾', '佰', '仟']
    ];
    var head = n < 0 ? '欠' : '';
    n = Math.abs(n);
    var s = '';
    for (var i = 0; i < fraction.length; i++) {
      if (i === fraction.length-1) {
      // 末位小數(shù)進行四舍五入解決2.01等浮點數(shù)精度導致的小數(shù)丟失問題
        s += (digit[Math.round(n * 10 * Math.pow(10, i)) % 10] +fraction[i]).replace(/零./,'');
      } else {
        s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./,'');
      }
    }
    s = s || '整';
    n = Math.floor(n);
    for (var i = 0; i < unit[0].length && n > 0; i++) {
        var p = '';
        for (var j = 0; j < unit[1].length && n > 0; j++) {
            p = digit[n % 10] + unit[1][j] + p;
            n = Math.floor(n / 10);
        }
        s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
    }
    return head + s.replace(/(零.)*零元/, '元')
        .replace(/(零.)+/g, '零')
        .replace(/^整$/, '零元整');
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前端知識體系http://www.cnblogs.com/sb19871023/p/3894452.html 前端...
    秋風喵閱讀 12,746評論 7 163
  • 現(xiàn)在好多人都將目光放在了錢的身上,為了利益,不惜破壞生態(tài),破壞我們賴以生存的環(huán)境。有多少人在關(guān)心污染問題,又有多少...
    波波701閱讀 358評論 0 2

友情鏈接更多精彩內(nèi)容