數(shù)字金額轉(zhuǎn)大寫

// 數(shù)字金額轉(zhuǎn)大寫
function convertCurrency(money) {
  //漢字的數(shù)字
  const cnNums = ['零', '壹', '貳', '叁', '肆', '伍', '陸', '柒', '捌', '玖'];
  //基本單位
  const cnIntRadice = ['', '拾', '佰', '仟'];
  //對應(yīng)整數(shù)部分擴展單位
  const cnIntUnits = ['', '萬', '億', '兆'];
  //對應(yīng)小數(shù)部分單位
  const cnDecUnits = ['角', '分', '毫', '厘'];
  //整數(shù)金額時后面跟的字符
  const cnInteger = '整';
  //整型完以后的單位
  const cnIntLast = '元';
  //最大處理的數(shù)字
  const maxNum = 999999999999999.9999;
  //金額整數(shù)部分
  let integerNum;
  //金額小數(shù)部分
  let decimalNum;
  //輸出的中文金額字符串
  let chineseStr = '';
  //分離金額后用的數(shù)組,預(yù)定義
  let parts;
  if (money == '') {
    return '';
  }
  money = parseFloat(money);
  if (money >= maxNum) {
    //超出最大處理數(shù)字
    return '';
  }
  if (money == 0) {
    chineseStr = cnNums[0] + cnIntLast + cnInteger;
    return chineseStr;
  }
  //轉(zhuǎn)換為字符串
  money = money.toString();
  if (money.indexOf('.') == -1) {
    integerNum = money;
    decimalNum = '';
  } else {
    parts = money.split('.');
    integerNum = parts[0];
    decimalNum = parts[1].substr(0, 4);
  }
  //獲取整型部分轉(zhuǎn)換
  if (parseInt(integerNum, 10) > 0) {
    let zeroCount = 0;
    const IntLen = integerNum.length;
    for (let i = 0; i < IntLen; i++) {
      const n = integerNum.substr(i, 1);
      const p = IntLen - i - 1;
      const q = p / 4;
      const m = p % 4;
      if (n == '0') {
        zeroCount++;
      } else {
        if (zeroCount > 0) {
          chineseStr += cnNums[0];
        }
        //歸零
        zeroCount = 0;
        chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
      }
      if (m == 0 && zeroCount < 4) {
        chineseStr += cnIntUnits[q];
      }
    }
    chineseStr += cnIntLast;
  }
  //小數(shù)部分
  if (decimalNum != '') {
    const decLen = decimalNum.length;
    for (let i = 0; i < decLen; i++) {
      const n = decimalNum.substr(i, 1);
      if (n != '0') {
        chineseStr += cnNums[Number(n)] + cnDecUnits[i];
      }
    }
  }
  if (chineseStr == '') {
    chineseStr += cnNums[0] + cnIntLast + cnInteger;
  } else if (decimalNum == '') {
    chineseStr += cnInteger;
  }
  return chineseStr;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末西采,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖橙垢,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怖糊,死亡現(xiàn)場離奇詭異,居然都是意外死亡牍帚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門乳蛾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來暗赶,“玉大人,你說我怎么就攤上這事肃叶□逅妫” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵因惭,是天一觀的道長糙及。 經(jīng)常有香客問我,道長筛欢,這世上最難降的妖魔是什么浸锨? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮版姑,結(jié)果婚禮上柱搜,老公的妹妹穿的比我還像新娘。我一直安慰自己剥险,他們只是感情好聪蘸,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般健爬。 火紅的嫁衣襯著肌膚如雪控乾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天娜遵,我揣著相機與錄音蜕衡,去河邊找鬼。 笑死设拟,一個胖子當著我的面吹牛慨仿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播纳胧,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼镰吆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了跑慕?” 一聲冷哼從身側(cè)響起万皿,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎核行,沒想到半個月后牢硅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡钮科,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年唤衫,在試婚紗的時候發(fā)現(xiàn)自己被綠了婆赠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绵脯。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖休里,靈堂內(nèi)的尸體忽然破棺而出蛆挫,到底是詐尸還是另有隱情,我是刑警寧澤妙黍,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布悴侵,位于F島的核電站,受9級特大地震影響拭嫁,放射性物質(zhì)發(fā)生泄漏可免。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一做粤、第九天 我趴在偏房一處隱蔽的房頂上張望浇借。 院中可真熱鬧,春花似錦怕品、人聲如沸妇垢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闯估。三九已至灼舍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涨薪,已是汗流浹背骑素。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留尤辱,地道東北人砂豌。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像光督,于是被迫代替她去往敵國和親阳距。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容