Qt将数字转为中文大写金额

在实现之前自己在网上找了相关资料, 没发现好的实现方法, 仿照一篇博客(http://blog.chinaunix.net/uid-30268735-id-5067078.html)写能实现将整数转为大写中文数字, 但是源代码写得有些复杂且没有实现小数的转换, 索性自己改写了一下.代码如下.

const QString XianJinShouFuEditForm::TranslateInteger(const double &Fnumber)
{
    const int fnum=3; //小数位数, 最大为3
    if(Fnumber<0.001)
        return "零";
    QString number = QString::number(qAbs(Fnumber),'f',fnum);
    const QStringList cnintegetelement={"个","万","亿","兆"};
    const QStringList cnmultipleelement={"仟","","拾","佰"};
    const QStringList cnnumber={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
    const QStringList decimal={"角","分","厘"};
    QString cnintegerpart="";
    //整数部分
    int len=number.length()-fnum-1;
    int i=0;
    if(len==1){
        if(number[i]!='0'){
            cnintegerpart += cnnumber[number[i].toLatin1()-'0'];
            cnintegerpart+="圆";
        }
    }else{
        while(i
  
  
   
   4 && (len-i)%4==1){
                   cnintegerpart += cnintegetelement[(len-i)/4];
                }
            }
            i++;
        }
        cnintegerpart+="圆";
    }

    //小数部分
    QStringList numberList=number.trimmed().split(".");
    QString rightNumber=numberList[1];
    int j=0;
    while(j
   
   
  
  

 测试后如下图: 

测试一: 整数

测试二: 小数


  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值