程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 小寫金額轉換為大寫

小寫金額轉換為大寫

編輯:Delphi

 

 


//本函數用於將小於十萬億元的小寫金額轉換為大寫
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沒有,只得自己定義。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved