发信人: tiger_x()
整理人: wenbobo(2002-12-27 15:50:04), 站内信件
|
人民币小写换大写程序的算法有很多在此给出一种,希望有更好的解法.
(此程序在borland c++ builder 4.0下通过)
//你必须保证参数是数字.
String __fastcall TForm1::UpperMoney(double jn)
{
int L , ZL , Z , U , V;
AnsiString F = "壹贰叁肆伍陆柒捌玖" ;
AnsiString G = "元万亿万拾佰仟分角" ;
AnsiString AA , B , JNS=" ";
double je ;
if(jn<=0)
return "零" ;
je=(jn<1?jn*100:jn) ;
sprintf(JNS.c_str(),"%26.2f",je) ;
JNS=TrimRight(TrimLeft(JNS)) ;
L = StrLen(JNS.c_str()) ;
L=(jn<1?(jn<0.1?1:2):L) ;
ZL = L+1 ;
AA =AnsiString("") ;
B = AnsiString("") ;
for( ;L>0; )
{
Z = StrToInt(JNS.SubString(ZL-L,1)) ;
U = int(L/4) ;
V = L%4 ;
if( Z>0 )
{
U=(V==0?U+U-1:V+V+(U>0?7:13)) ;
AA = AA+B+F.SubString(Z+Z-1,2)+G.SubString(U,2) ;
B = "" ;
}
else
{
if(L==1)
AA=AA+"整" ;
else
{
if(V==0)
AA=AA+G.SubString(U*2-1,2);
else
AA=AA+"" ;
}
B=(V>=0?"零":"") ;
}
L=(L==4?2:L-1) ;
}
return AA ;
}
-- *********
* Tiger *
*********
http://jtiger.163.net
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.190.111]
|
|