思路如下:
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...