演算法 Unicode版人民幣小寫金額轉大寫金額

2021-07-16 19:18:07 字數 1520 閱讀 2708

思路如下:

1、宣告變數:是否負數,是否開頭數字是0,

2、宣告變數:最後與取絕對值轉換的結果串聯

3、宣告變數:大寫數字元資料和大寫單位元資料

4、宣告變數:絕對值的轉換結果,臨量變數

5、如果是負數則取絕對值

6、格式化,末尾新增1個小數點和2個0

7、根據字串長度判斷數值,太大則不轉

8、對照元資料查詢數字對應的中文大寫字元,根據字元的位置插入大寫單位

9、關於零的處理:以適應中文習慣

10、如果是負數則新增字首

**如下:

//

//1、宣告變數:是否負數,是否開頭數字是0,

//2、宣告變數:最後與取絕對值轉換的結果串聯

//3、宣告變數:大寫數字元資料和大寫單位元資料

//4、宣告變數:絕對值的轉換結果,臨量變數

//5、如果是負數則取絕對值

//6、格式化,末尾新增1個小數點和2個0

//7、根據字串長度判斷數值,太大則不轉

//8、對照元資料查詢數字對應的中文大寫字元,根據字元的位置插入大寫單位

//9、關於零的處理:以適應中文習慣

//10、如果是負數則新增字首

//const lptstr rmbtoupper(double dnum)

; lptstr szrmbunit[19]=

;static tchar szrmbupper[256],szrmbtmp[256];

if(dnum<0)

_stprintf(szrmbtmp,"%.2lf",dnum);

if(lstrlen(szrmbtmp)>19)

return null;

int i=lstrlen(szrmbtmp)-1,c;

lptstr srcptr=szrmbtmp,dstptr=szrmbupper;

for(; *srcptr; srcptr++,i--)

if(isprevzero)

isprevzero=false;}}

else

else}}

i=lstrlen(szrmbupper);

if(lstrcmp(szrmbupper+i-2,"零")==0)

szrmbupper[i-2]=0;

szrmbtmp[0]=szrmbupper[0];

szrmbtmp[1]=szrmbupper[1];

szrmbtmp[2]=0;

if(lstrcmp(szrmbtmp,"元")==0)

}if (isnegative)

return szrmbupper;

}

建議:函式返回值改為bool型別,函式引數加入儲存轉換結果的字串引數以及儲存區大小,即:

const lptstr rmbtoupper(double dnum,tchcar* pszrmbupper,int imaxcount)

人民幣小寫轉大寫

package day00 public class moneyelse result result.replaceall 零角 零 result result.replaceall 零分 零 result result.replaceall 角零 角 if result.equals 零零 ret...

人民幣小寫轉大寫

c code 例如 new money 200 tostring 貳佰元 namespace skyiv.util catch system.console.writeline 大寫 newmoney m 該類過載的 tostring 方法返回的是大寫金額字串 class money 建構函式 pu...

人民幣小寫轉大寫

小寫金額轉成大寫。param input return public static string numtochinese string input catch exception e int len 0 if temp.indexof 1 len temp.length else len temp...