人民币小写转大写的一般方法

人民币小写转大写的一般方法。还可以

const char* RMB(double rmb)
{
    if(rmb<0) return NULL;
    static char *CCC[10]={ //Capital form of Chinese character
     "零","壹","贰","叁","肆","伍","陆","柒","捌","玖"
    };
    static char *QQQ[19]={"分","角",".","圆","拾","佰","仟","万","拾","佰","仟","亿",
     "拾","佰","仟","万","拾","佰","仟"
    };
    static char result[256],tmp[256];
    sprintf(tmp,"%.2lf",rmb);
    if(strlen(tmp)>19) return NULL;
    int i=strlen(tmp)-1,c;
    char *srcPtr=tmp,*dstPtr=result;
    bool bPrevZero=false;
    for(; *srcPtr; srcPtr++,i--) {
     if(*srcPtr=='.') continue;
        c=*srcPtr-'0';
   if(c!=0) {
         strcpy(dstPtr,CCC[c]); dstPtr+=2;
            if(srcPtr==tmp && c==1 && strcmp(QQQ[i],"拾")==0) dstPtr-=2;
         strcpy(dstPtr,QQQ[i]);  dstPtr+=2;
            bPrevZero=false;
            continue;
        }
        if(bPrevZero) {
         if(strcmp(QQQ[i],"圆")==0 || strcmp(QQQ[i],"万")==0 || strcmp(QQQ[i],"亿")==0) {
             dstPtr-=2; *dstPtr=0;
             if(strcmp(dstPtr-2,"亿")) {strcpy(dstPtr,QQQ[i]); dstPtr+=2;}
                bPrevZero=false;
            }
        } else {
         if(strcmp(QQQ[i],"圆") && strcmp(QQQ[i],"万") && strcmp(QQQ[i],"亿")) {
    strcpy(dstPtr,"零"); dstPtr+=2;
                bPrevZero=true;
            }else {
             strcpy(dstPtr,QQQ[i]);  dstPtr+=2;
                bPrevZero=false;
            }
  }
    }
    i=strlen(result);
    if(strcmp(result+i-2,"零")==0) result[i-2]=0;
    tmp[0]=result[0]; tmp[1]=result[1]; tmp[2]=0;
    if(strcmp(tmp,"圆")==0) {
        if(result[2]==0) strcpy(result,"零圆");
        else {
         tmp[0]=result[2]; tmp[1]=result[3]; tmp[2]=0;
            return strcmp(tmp,"零")==0 ? result+4 : result+2 ;
        }
    }
    return result;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值