太對了﹐我寫了有一個小的公共程序﹐一定滿足你的要求
轉換的非常正確
  [email protected]

解决方案 »

  1.   

    WilliamGui(寒锋):可以把你的方法发到我的信箱里面去吗?[email protected],不胜感激.也欢迎其他朋友赐教!
      

  2.   

    function RMB(NN:real):string;
    var
    HZ,NS,NW,NA,N1,N2:string;
    LA,X,Nk:integer;
    begin
    if NN>9999999999999.99 then
    begin
    MessageDlg('金额溢出.',mtError,[mbOk], 0);
    HZ:='';
    Result:=HZ;
    exit;
    end;
    if NN=0 then
    begin
    HZ:='零元';
    result:=HZ;
    exit;
    end;
    NS:='零壹贰叁肆伍陆柒捌玖';
    NW:='分角元拾佰仟万拾佰仟亿拾佰仟万';
    NN:=StrToFloat(FormatFloat('0.00',NN));//这句是经过网友jycjd调试得出的结果
    NA:=FloatToStr(NN*100);
    LA:=length(NA);
    X:=1;
    HZ:='';
    while X<=LA do
    begin
    NK:=Ord(NA[x])-Ord('0');
    N1:=Copy(NS,NK*2+1,2);
    N2:=Copy(NW,LA*2+1-X*2,2);
    if (NK=0) AND ((N2='亿') OR( N2='万') OR( N2='元'))then
    begin
    if copy(HZ,Length(HZ)-1,2)='零' then
    HZ:=copy(HZ,1,length(HZ)-2);
    if copy(HZ,Length(HZ)-1,2)='亿' then
    if N2='元' then
    begin
    N1:=N2;
    N2:='零';
    end
    else
    N2:=''
    else
    begin
    N1:=N2;
    N2:='零';
    end
    end
    else if NK=0 then
    begin
    if copy(HZ,length(HZ)-1,2)='零' then
    N1:='';
    if N2='分' then
    begin
    if copy(HZ,length(HZ)-1,2)='零' then
    HZ:=copy(HZ,1,length(HZ)-2)+'整'
    else
    HZ:=HZ+'整'; 
    N1:='';
    end;
    N2:='';
    end;
    HZ:=HZ+N1+N2;
    X:=X+1
    end;
    Result:=HZ;
    end;