现在的位置: 首页 > 综合 > 正文

大写金额转换

2013年04月26日 ⁄ 综合 ⁄ 共 1040字 ⁄ 字号 评论关闭

AnsiString 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;
}

抱歉!评论已关闭.