数字转汉字大写金额

原创程序,在SCO UNIX和红旗LINUX下测试通过

 

int xianjin(double amt,char *rt_str)
{   static char *daxie="零壹贰叁肆伍陆柒捌玖";
    static char *weishu="亿仟佰拾万仟佰拾圆整角分";
    int  i,flag=0,tmp_num;
    char tmp[4+1],amt_str[50+1];
 

    memset(amt_str,0,sizeof(amt_str));
    sprintf(amt_str,"%012.2f",amt);
    memset(rt_str,0,sizeof(rt_str));
    for (i=0;amt_str[i];i++)
      {  tmp_num=amt_str[i]-48;
         if( flag==0 ) {
           if( amt_str[i]=='.' )
              continue;
           if( tmp_num==0 )
              continue;
           else
              flag=1;
           sprintf(rt_str,"%2.2s%2.2s",daxie+tmp_num*2,weishu+i*2);
         }
         else {
           if(amt_str[i]=='.')
                continue;
           memset(tmp,0,sizeof(tmp));
           sprintf(tmp,"%2.2s%2.2s",daxie+tmp_num*2,weishu+i*2);
           if(!strncmp(tmp,"零",2))
              if(!strncmp(tmp+2,"圆",2))
                 {memset(tmp,0,sizeof(tmp));sprintf(tmp,"圆");}
              else if(!strncmp(tmp+2,"万",2))
                 {memset(tmp,0,sizeof(tmp));sprintf(tmp,"万");}
              else if( (amt_str[i+1]>='1') &&(amt_str[i+1]<='9') )
                 {memset(tmp,0,sizeof(tmp));sprintf(tmp,"零");}
              else
                 continue;
           strcat(rt_str,tmp);
         }
      }
    if(!strncmp(tmp+2,"圆",2))
        strcat(rt_str,"整");
    return  1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值