數字金額轉換成漢字大寫的金額c語言實現

  用發帖子,找個分類竟然找不到合適的,就看到 遊戲/數碼 網際網路最接近這方面:

數字金額轉換成漢字大寫的金額,給大家分享一下

char* MoneyToChinaHanZi(double money, char* chinaHZ)

將數字金額轉換為漢字大寫的金額。理論上支持任意位數的金額(只要計算機能支持足夠 長的數字位數)。

實際支持的位數由函數內部char mony[1024]變量的長度確定,還與計算機數據類型能表示的最大長度有關。

參數  money 輸入數字金額. money的值不小於0.

chinaHZ 輸出參數,輸出轉換後的漢字大寫金額。

返回值:   失敗返回NULL,金額小於0; 

成功返迴轉換後的大寫金額字符串。

方法/步驟

/** \brief MoneyToChinaHanZi()將數字金額轉換為漢字大寫的金額。理論上支持任意位數的金額(只要計算機能支持足夠長的數字位數)。

*        實際支持的位數由char mony[1024]變量的長度確定,還與計算機數據類型能表示的最大長度有關。

* \param    money 輸入數字金額. money的值不小於0.

* \param    chinaHZ 輸出參數,輸出轉換後的漢字大寫金額。

* \return   失敗返回NULL,金額小於0; 

*           成功返迴轉換後的大寫金額字符串;

*/

char* MoneyToChinaHanZi(double money, char* chinaHZ)

{

char* cpaiHZnum[] = {"零","壹","貳", "叄","肆","伍","陸","柒","捌","玖"};

char* unitL[] = {"拾","佰","仟","萬","拾","佰","仟","億"};

char* yuan[]={"元"};

char* unitR[] = {"角","分"};

char mony[1024];

memset(mony, 0x00, sizeof(mony));

sprintf(mony, "%.2lf", money);

if(mony[0]=='-')

{

printf("error,金額不能小於0\n");

return NULL;

}

int i=0;

int dotIndex=0; //記錄小數點位置索引

int slen=strlen(mony);

//獲取小數點位置索引

for(i=0; i<slen; i++)

{

if(mony[i]=='.')

{

dotIndex=i;

break;

}

}

//處理小數點左邊

strcpy(chinaHZ, "\0");//防止chinHZ內有髒數據時連接多餘數據

//處理第一個字符的值

i=0;

strcat(chinaHZ,cpaiHZnum[mony[i]-0x30]);

if(dotIndex-i-2>=0)

{

strcat(chinaHZ,unitL[(dotIndex-i-2)%8]);

}

else

{

//strcat(chinaHZ,yuan[0]);

}

//從第二個字符開始處理

for(i=0+1; i<dotIndex; i++)

{

int tt=0;

if( mony[i]=='0')

{

tt=dotIndex-2 - i;

if(tt%8==7 )

{

strcat(chinaHZ,unitL[7]);//單位:億

}

//單位萬的位置及其左邊三位數字全部是0,則數字金額中不加單位萬

if(tt%8==3 && mony[i]=='0' && mony[i-1]=='0' && mony[i-2]=='0' && mony[i-3]=='0')

{

continue;

}

if(tt%8==3 )

{

strcat(chinaHZ,unitL[3]);//單位:萬

}

continue;

}

if(mony[i-1]=='0' && mony[i] !='0')

{

strcat(chinaHZ, cpaiHZnum[0]);

strcat(chinaHZ, cpaiHZnum[mony[i]-0x30]);

if(dotIndex-i==1)//個位,連接單位元

{

// strcat(chinaHZ, yuan[0]);

}

else if(dotIndex-i>1)

{

strcat(chinaHZ, unitL[(dotIndex-i-2)%8]);

}

}

if(mony[i-1]!='0' && mony[i] != '0')

{

strcat(chinaHZ, cpaiHZnum[mony[i]-0x30]);

if(dotIndex-i==1)//個位,連接單位元

{

//strcat(chinaHZ, yuan[0]);

}

else if(dotIndex-i>1)//不是個位,連接相應的單位

{

strcat(chinaHZ, unitL[(dotIndex-i-2)%8]);

}

}

}

strcat(chinaHZ, yuan[0]);//不管多少位,整數部分最後都要連接單位:元

//小數點後兩位不全為0, 則處理小數點後的

if(!(mony[dotIndex+1]=='0' && mony[dotIndex+2]=='0'))

{

//連接點和小數點後兩位

for(i=dotIndex+1; i<=dotIndex+2; i++)

{

if((i==dotIndex+2) && mony[i]=='0')

{

//小數點後面第二位為0時,不做任何處理,如 0.70元轉為 柒角

continue;

}

strcat(chinaHZ, cpaiHZnum[mony[i]-0x30]);

if(mony[i]!='0')//如果小點後不為0則加單位

{

strcat(chinaHZ, unitR[(i-dotIndex-1)]);

}

}

}

chinaHZ[strlen(chinaHZ)]='\0';

return chinaHZ;

}

相關文章

  1. Excel如何將數字小寫轉換成漢字大寫

    Excel是我們比較熟悉的一款圖表製作軟體,那麼在使用Excel的過程中如何將數字小寫轉換成漢字大寫呢?轉換方法是很簡單的,下面小編就為大家分享一下數字小寫轉換成漢字大寫的方法吧~ 方法/步驟 打開E ...
  2. 如何將Word中的數字快速轉換成漢字大寫?

    我們運用Word過程中,有時需要輸入一些大寫數字,在輸入時就比較麻煩.其實掌握一些軟體技巧就能快速把已有的阿拉伯數字轉換成大寫金額,提高輸入效率. 方法/步驟 單擊桌面快捷方式,打開Word出現 新建 ...
  3. 如何將WPS中的數字快速轉換成漢字大寫?

    我們運用WPS過程中,有時需要輸入一些大寫數字,在輸入時就比較麻煩.其實掌握一些軟體技巧就能快速把已有的阿拉伯數字轉換成大寫金額,提高輸入效率. 方法/步驟 單擊桌面快捷方式,打開WPS程序 新建一個 ...
  4. Excel數字小寫金額轉換成漢字大寫金額的方法

    本文主要介紹l數字小寫金額轉換成漢字大寫金額的方法. 工具/原料 Excel 方法/步驟 假設要轉換的數字小寫金額在A列,如圖所示: 選中要轉換的數字所在的單元格區域,按下CTRL+1組合快捷鍵,彈出 ...
  5. 英文版Excel數字金額轉換成漢字大寫金額

    本文主要介紹在英文版EXCEL中數字金額用函數轉換成漢字大寫金額的方法 工具/原料 英文版Excel 方法/步驟 打開EXCEL,在A1單元格中輸入小寫數字金額 在B2單元格輸入下面函數: =IF(A ...
  6. excel中將發票數字金額轉換成中文大寫的方法

    小編致力於為大家奉獻最有效的經驗,讓大家能夠解決掉問題,但是大家也都知道,每個人遇到的情況都是不一樣的,大家在看小編經驗的同時,除了跟隨操作,也需要自己的思考,舉一反三的解決問題,這樣才會變得更加有內 ...
  7. 如何將Excel2007里的數字轉換成漢字大寫?

    做財務報表經常會用到的功能. 工具/原料 Office Excel2007 Windows作業系統 方法/步驟 滑鼠選中你要變成漢字大寫的單元格. 右擊滑鼠,選中裡面的設置單元格格式. 在彈出界面里, ...
  8. Excel如何將數字日期轉換成漢字日期

    本教程將介紹如何將單元格中輸入的數字日期轉換成漢字日期. 工具/原料 Excel 教程以Excel2013為例 方法/步驟 教程以新建的Microsoft Excel電子表格為例. 雙擊Excel應用 ...
  9. 數字或金額轉換成大寫的快捷方法

    我們在工作和生活中如果在電腦上操作關於錢的數字時,很多時候我們需要把數字轉換成大寫,例如"0123456789"轉換成"零壹億貳仟叄佰肆拾伍萬陸仟柒佰捌拾玖", ...
  10. word中如何快速將數字金額轉換成大寫

    在平時,經常會使用到要將數字金額轉換成大寫,方法很多,但求快速. 工具/原料 word 方法/步驟 剛開始,小編習慣性上瀏覽器搜尋,找人民幣 大寫 在線轉換 工具.然後輸入數字金額進行轉換,前提還得有 ...
  11. excel怎樣把金額數字小寫轉換成大寫

    對於某些需求,需要裝金額的小寫數字,改為大寫文字,特別對於財務上要求,那麼怎樣操作呢! 工具/原料 excel 軟體 方法/步驟 簡單做一個表格來演示,我們需要把工資裡面的小數金額數字轉為大寫金額 選 ...
  12. Excel數字小寫金額怎麼轉換成漢字大寫金額

    Excel數字小寫金額怎麼轉換成漢字大寫金額,相信很多朋友們對此都很感興趣,下面就和大家來分享一下,希望可以幫助到大家. 方法/步驟 打開excel,輸入數字並全部選中. 點擊滑鼠右鍵選擇" ...
  13. 如何快速的將數字金額轉換成大寫金額

    在財務中,經常遇到要將小寫金額轉換成大寫金額的情況.那麼我們應該怎麼辦呢? 工具/原料 WPS2013的表格 方法/步驟 如圖所示. 這時我們只要選中數字所在的單元格. 右擊滑鼠,選擇"設置 ...
  14. excel vba實例003 如何將小寫金額轉換成大寫

    小寫金額轉換成大小金額其實在工作中是經常需要用到的,excel中轉換大寫金額的方法很多,但我更傾向於使用自定義函數,保存為加載宏的方法,因為這樣可以保存成一個加載宏文件,方便隨時取用. 下面給出我的操 ...
  15. excel中如何將數字轉換成中文大寫漢字

    excel文檔中,我們輸入數字之後,需要將數字轉換成相應的中文漢字,可以作為記帳的時候使用,那麼如何在excel中進行轉換呢 方法/步驟 打開excel文檔,進入主界面信息,點擊一個單元格 右鍵點擊該 ...
  16. Excel如何快速將金額轉換成大寫?

    錢不是萬能的,但沒錢是萬萬不能的.能用錢解決的問題,就都不是大問題. 本節小福帶大家探索金額轉換成大寫金額的方法 先介紹兩種可以將數字轉換成大寫的方法技巧 工具/原料 電腦一台 方法/步驟 調整格式 ...
  17. Word實用操作:[6]數字轉換成人民幣大寫

    Word中如何將數字轉換成人民幣大寫,小編教你吧. 工具/原料 電腦 Word2010 方法/步驟 打開word文檔,在文檔中輸入0-9的數字: 選中需要轉換成人民幣大寫的數字,點擊上面菜單中的&qu ...
  18. Excel 2010如何快速將數字轉換成中文大寫或小寫

    本文介紹在Excel 2010  中 如何快速將阿拉伯數字轉換成中文大寫或者小寫的數字 工具/原料 Excel 2010 方法/步驟 如圖表格所示需要轉換的阿拉伯數字,用滑鼠拖拉選中 依次點右鍵,設置 ...
  19. 怎麼將小寫金額轉換成大寫金額顯示?

    在工作中,做合同,協議,訂單等文件中,需要寫明金額,大寫金額手動輸入的話除了不方便之外,還容易出錯,如何將小寫金額直接在文檔里轉換成大寫呢? 工具/原料 excel word 方法/步驟 打開exce ...
  20. 在word裡面怎麼實現把小寫數字轉換成中文大寫?

    在excel中非常簡單的實現小寫數字轉換為中文大寫,那在word中怎麼能快速實現呢?我們來學習一下. 工具/原料 word 方法/步驟 打開word文檔,輸入一段數字,複製一層,以下面的轉換為主. 選 ...