在实现之前自己在网上找了相关资料, 没发现好的实现方法, 仿照一篇博客(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
测试后如下图: 测试一: 整数
测试二: 小数