Function NumberToRMB(Value :Real): String; //金额转换成人民币大写字符串 Const DwList: Array[1..14] OF String =('分','角','元','拾','佰','千','万','拾','佰','仟','亿','拾','佰','千'); NumList: Array[0..9] OF String = ('零','壹','贰','叁','肆','伍','陆','染','捌','玖'); Var I, Index, K: Integer; Num, RMB: String; isZero, isDw: Boolean; Begin IF Value=0 Then Begin Result:= '零元整'; Exit; End; Num:= FormatFloat('', ABS(Round(Value*100))); RMB:= ''; Index:= 0; isZero:= False; isDW:= False; For I:=Length(Num) DownTo 1 Do Begin Inc(Index); IF (Index=3)OR(Index=7)OR(Index=11) Then Begin IF Num[I+1]='0' Then Insert(NumList[0], RMB, 1); Insert(DwList[Index], RMB, 1); isDW:= True; isZero:= False; End; K:= StrToInt(Num[I]); IF K<>0 Then Begin IF isZero And (not isDW) Then Insert(NumList[0], RMB, 1); IF DwList[Index]=Copy(RMB, 1, 2) Then Insert(NumList[K], RMB, 1) Else Insert(NumList[K]+DwList[Index], RMB, 1); isDW:= False; isZero:= False; End Else isZero:= True; End; IF Copy(RMB, Length(RMB)-1, 2)<>NumList[0] Then Result:= RMB + '整' Else Result:= Copy(RMB, 1, Length(RMB)-2) + '整'; IF Value<0 Then Insert('负', Result, 1); End;
http://www.ddvip.net/program/delphi/index6/190.htm
Const
DwList: Array[1..14] OF String
=('分','角','元','拾','佰','千','万','拾','佰','仟','亿','拾','佰','千');
NumList: Array[0..9] OF String = ('零','壹','贰','叁','肆','伍','陆','染','捌','玖');
Var
I, Index, K: Integer;
Num, RMB: String;
isZero, isDw: Boolean;
Begin
IF Value=0 Then Begin
Result:= '零元整';
Exit;
End;
Num:= FormatFloat('', ABS(Round(Value*100)));
RMB:= '';
Index:= 0;
isZero:= False;
isDW:= False;
For I:=Length(Num) DownTo 1 Do Begin
Inc(Index);
IF (Index=3)OR(Index=7)OR(Index=11) Then Begin
IF Num[I+1]='0' Then Insert(NumList[0], RMB, 1);
Insert(DwList[Index], RMB, 1);
isDW:= True;
isZero:= False;
End;
K:= StrToInt(Num[I]);
IF K<>0 Then Begin
IF isZero And (not isDW) Then Insert(NumList[0], RMB, 1);
IF DwList[Index]=Copy(RMB, 1, 2) Then Insert(NumList[K], RMB, 1)
Else Insert(NumList[K]+DwList[Index], RMB, 1);
isDW:= False;
isZero:= False;
End
Else isZero:= True;
End;
IF Copy(RMB, Length(RMB)-1, 2)<>NumList[0] Then Result:= RMB + '整'
Else Result:= Copy(RMB, 1, Length(RMB)-2) + '整';
IF Value<0 Then Insert('负', Result, 1);
End;