人民币小写转大写BCB代码

    技术2022-05-11  74

    //-------------------------------------- //用法:  将dx.h拷到程序所在目录 //在调用表单首部加上 #include dx.h //调用方式: Edit1->Text = dx("132456"); //注:不能带小数点,金额扩大一百倍输入 //---------------------------------------- #include <math.h> #include <stdio.h> AnsiString dx(AnsiString s) {     if((s.Length() <= 0) && (s.ToIntDef(0) == 0))         return "币零元零角整";     AnsiString odxc, odxs, oszc, oscc, oscc0;     int oi, oi0, i;     double ormb=StrToFloat(s); //金额小写     if(ormb == 0.00)         return "币零元零角整";     odxc="分角圆拾佰仟万拾佰仟亿拾佰仟万拾佰仟亿";     odxs="零壹贰叁肆伍陆柒捌玖";     oszc=FloatToStr(abs(ormb));     i=AnsiPos('.', s);     oszc.Delete(i, 1); // stuf(oszc, 18, 1, '');     oszc=Trim(oszc);     oscc="";     oi0=0;     for(oi=oszc.Length(); oi>0; oi--)     {         oscc=odxc.SubString(oi0*2+1, 2)+oscc;         oscc=odxs.SubString(StrToInt(oszc.SubString(oi, 1))*2+1, 2)+oscc;         oi0++;     }     oscc0="";     for(oi=1; oi <= oscc.Length(); oi=oi+4)     {         if(oscc.SubString(oi, 2) == "零")         {             if(oscc.SubString(oi+2, 2) == "万")             {                 if(oscc0.SubString(oscc0.Length()-3, 4) != "亿零")                 {                     if(oscc0.SubString(oscc0.Length()-1, 2) == "零")                         oscc0=oscc0.SubString(1, oscc0.Length()-2)+"万";                     else oscc0=oscc0+"万";                 }                 continue;             }             if(oscc.SubString(oi+2, 2) == "圆")             {                 if(oscc0.SubString(oscc0.Length()-1, 2) == "零")                     oscc0=oscc0.SubString(1, oscc0.Length()-2)+"圆";                 else oscc0=oscc0+"圆";                     continue;             }             if(oscc.SubString(oi+2, 2) == "亿")             {                 if(oscc0.SubString(oscc0.Length()-1, 2) == "零")                     oscc0=oscc0.SubString(1, oscc0.Length()-2)+"亿";                 else oscc0=oscc0+"亿";                     continue;             }             if(oscc0.SubString(oscc0.Length()-1, 2) != "零")                 oscc0=oscc0+"零";         }         else oscc0=oscc0+oscc.SubString(oi, 4);     }     if((oscc0.SubString(oscc0.Length()-3, 4) == "圆零"))     {         oscc0=oscc0.SubString(1, oscc0.Length()-2)+"整";         return oscc0;     }     if((oscc0.SubString(oscc0.Length()-3, 4) == "角零"))     {         oscc0=oscc0.SubString(1, oscc0.Length()-2)+"整";         return oscc0;     }     if((oscc0.SubString(oscc0.Length()-1, 2) == "零"))         oscc0=oscc0.SubString(1, oscc0.Length()-2)+"圆整";     return oscc0; } / String UpperMoney(double jn) {     int L, ZL, Z, U, V;     AnsiString F = "壹贰叁肆伍陆柒捌玖";     AnsiString G = "元万亿万拾佰仟分角";     AnsiString AA, B, JNS;     JNS.SetLength(255);     double je;     if(jn <= 0)         return "零";     je=(jn<1?jn*100:jn);     //printf(JNS.c_str(),"&.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; }  

    最新回复(0)