FastReport人民币大写转换
function MoneyToCharacter(Money:real):string; //數(shù)字轉(zhuǎn)換為中文大寫
var
??? temp:string;
??? resu:string;
??? i,j:integer;
??? len:integer;
??? Num:array[0..9] of string;
??? A:array[0..13] of string;
begin
???? Num[0]:='零';
???? num[1]:='壹';
???? Num[2]:='貳';
???? num[3]:='叁';
???? Num[4]:='肆';
???? num[5]:='伍';
???? Num[6]:='陸';
???? num[7]:='柒';
???? Num[8]:='捌';
???? num[9]:='玖';
???? a[0]:='分';
???? a[1]:='角';
???? a[2]:='元';
???? a[3]:='拾';
???? a[4]:='佰';
???? a[5]:='仟';
???? a[6]:='萬';
???? a[7]:='拾';
???? a[8]:='佰';
???? a[9]:='仟';
???? a[10]:='億';
???? a[11]:='拾';
???? a[12]:='佰';
???? a[13]:='仟';
???? temp:=trim(inttostr(round(money*100)));
???? len:=length(temp);
???? resu:='';
???? if (len>13) or (len=0) then
?????? begin
???????? exit;
?????? end;
???? for i:=1 to len do
???? begin
???????? j:=strtoint(copy(temp,i,1));
???????? resu:=resu+num[j]+a[len-i];
???? end;
???? result:=resu;
end;
調(diào)用方法:
Memo2.text:=MoneyToCharacter(sum(<frxDBDataset1."Amount">));
或 MoneyToCharacter(3654.63);
另:
void ? fnFloatToRMB(float ? Money) ?
? { ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? String ? sRMBUnit="分角元拾佰仟萬拾佰仟億拾百"; ?
? String ? sRMBNumber="零壹貳叁肆伍陸柒捌玖"; ?
? String ? sMoney,sRMBMoney,sChar,sNumber,sUnit; ?
? int iMoneyLength,iPosDecimal; ?
? float fAfterDecimal; //小數(shù)部分 ?
? int iBeforeDecimal; //整數(shù)部分 ?
? bool ? bIsZeroEnd; ?
? ?
? iBeforeDecimal=Money; ?
? fAfterDecimal=fabs(Money-iBeforeDecimal); ?
? if(fAfterDecimal ? > ? 0 ? || Money == ? 0) ?
? { ?
? sRMBMoney=""; ?
? } ?
? else ?
? { ?
? sRMBMoney="整"; ?
? } ?
? ?
? sMoney=FormatFloat("0.00",Money); ?
? //刪除小數(shù)點(diǎn) ?
? iPosDecimal =sMoney.Pos("."); ?
? if(iPosDecimal ? > ? 0) ?
? sMoney=sMoney.Delete(iPosDecimal,1); ?
? iMoneyLength=sMoney.Length(); ?
? ?
? int i=0; ?
? bIsZeroEnd=true; ?
? while(iMoneyLength>0) ?
? { ?
? i++; ?
? sChar=sMoney.SubString(iMoneyLength,1); ?
? if(sChar=="-") ?
? { ?
? sNumber="負(fù)"; ?
? sUnit=""; ?
? } ?
? else ?
? { ?
? sNumber=sRMBNumber.SubString(StrToInt(sChar)*2+1,2); ?
? sUnit=sRMBUnit.SubString(i*2-1,2); ?
? if(sChar=="0") ?
? { ?
? if(i!=3 && ? i!=7 && ? i!=11) sUnit=""; ?
? if(bIsZeroEnd || ? i==3 || ? i==7 || ? i==11) sNumber=""; ?
? if(fabs(Money)<1 ? && i<=3){sUnit="";sNumber="";} ?
? bIsZeroEnd=true; ?
? } ?
? else ? bIsZeroEnd=false; ?
? if(sChar=="1") ?
? { ?
? if((i==sMoney.Length() ? || (i==sMoney.Length()-1 && ? Money<0)) ?
? && ? (i==2|| i==4 ? || i==8)) ?
? sNumber=""; ?
? } ?
? } ?
? sRMBMoney=sNumber+sUnit+sRMBMoney; ?
? iMoneyLength--; ?
? } ?
? return ? sRMBMoney; ?
? }
轉(zhuǎn)載于:https://www.cnblogs.com/MaxIE/archive/2009/10/30/1592831.html
總結(jié)
以上是生活随笔為你收集整理的FastReport人民币大写转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ping 学习
- 下一篇: 四、Delphi 2009 泛型容器单元