金額大小寫轉換

 

思路如下:

1. 先格式化数字

2. 取出小数点的位置

3. 开始转换

4. 组装

 

 

function SmallTOBig(small:real):string;//金額大小寫轉換
var SmallMonth,BigMonth:string;
    wei1,qianwei1:string[2];
    qianwei,dianweizhi,qian:integer;
begin
   {------- 修改參數令值更精確 -------}
   {小數點後的位置,需要的話也可以改動-2值}
   qianwei:=-2;
   {轉換成貨幣形式,需要的話小數點後加多幾個零}
   Smallmonth:=formatfloat('0.00',small);
   {---------------------------------}
   dianweizhi :=pos('.',Smallmonth);{小數點的位置}
   {迴圈小寫貨幣的每一位,從小寫的右邊位置到左邊}
   for qian:=length(Smallmonth) downto 1 do
   begin
     {如果讀到的不是小數點就繼續}
     if qian<>dianweizhi then
     begin
     {位置上的數轉換成大寫}
        case strtoint(copy(Smallmonth,qian,1)) of
          1:wei1:='壹'; 2:wei1:='貳';
          3:wei1:='三'; 4:wei1:='肆';
          5:wei1:='伍'; 6:wei1:='陸';
          7:wei1:='柒'; 8:wei1:='捌';
          9:wei1:='玖'; 0:wei1:='零';
        end;
        {判斷大寫位置,可以繼續增大到real類型的最大值}
        case qianwei of
          -3:qianwei1:='厘';
          -2:qianwei1:='分';
          -1:qianwei1:='角';
          0 :qianwei1:='元';
          1 :qianwei1:='拾';
          2 :qianwei1:='佰';
          3 :qianwei1:='仟';
          4 :qianwei1:='萬';
          5 :qianwei1:='拾';
          6 :qianwei1:='佰';
          7 :qianwei1:='仟';
          8 :qianwei1:='億';
          9 :qianwei1:='十';
          10:qianwei1:='佰';
          11:qianwei1:='仟';
        end;
        inc(qianwei);
        BigMonth :=wei1+qianwei1+BigMonth;{組合成大寫金額}
      end;
   end;
   SmallTOBig:=BigMonth;
end;

你可能感兴趣的:(大小)