//本函數用於將小於十萬億元的小寫金額轉換為大寫
Function NtoC( n0 :real) :String;
Function IIF( b :boolean; s1,s2 :string) :string;
begin if b then IIF:= s1 else IIF:=s2;
end; //本函數的功能一目了然: 當b為真時返回s1,否則返回s2
Const c= ’零壹貳三肆伍陸柒捌玖◇分角圓拾佰仟萬拾佰仟億拾佰仟萬’;
var L,i,n :integer; Z :boolean; s,s1,s2 :string;
begin
s:= FormatFloat( ’0.00’, ABS(n0));
L:= Length( s);
Z:= n0<1;
For i:= 1 To L-3 do
begin
n:= StrToInt( s[ L-i-2]);
s1:=IIf((n=0)And(Z Or (i=9) Or (i=5) Or (i=1)), ’’, Copy( c, n*2+1, 2))
+ IIf((n=0)And((i<>9)And(i<>5)And(i<>1) Or Z And(i=1)),’’,Copy(c,(i+13)*2-1,2))
+ s1;
Z:= (n=0);
end;
Z:= False;
For i:= 1 To 2 do
begin
n:= StrToInt( s[ L-i+1]);
s2:= IIf((n=0)And((i=1) Or (i=2)And(Z Or (n0<1))), ’’, Copy( c, n*2+1, 2))
+ IIf( (n>0), Copy( c,(i+11)*2-1, 2), IIf( (i=2) Or Z, ’’,’整’))
+ s2;
Z:= (n=0);
end;
For i:= 1 To Length( s1) do If Copy(s1, i, 4) = ’億萬’ Then Delete(s1,i+2,2);
NtoC:= IIf(n0=0, ’零’, IIF(n0<0, ’-’,’’)+ s1+s2);
End;
//對於大寫金額中“零”的用法,習慣不同,清指正。
//在FoxPro、VB中,IIF都是內部函數。但Delphi沒有,只得自己定義。