⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 decstrround.txt

📁 <数字转换汉字大写和英文读法的几个函数> 很早以前写的一个数字转换汉字大写和英文读法的几个函数,02年还修改过,可应用于delphi和Powerbuider,有兴趣的朋友可以改成其他
💻 TXT
字号:
  function DecStrRound(DecStr:String;Digit:integer;FillZero:boolean):string;//四舍五入函数
    //本函数将数字格式的字符串四舍五入
    //Digit:保留小数位数
    //FillZero:少于保留位数则用0填充
  var i,P,PotLt:integer;
      DecError:boolean;
      FrontStr,TailStr,TempStr:string;
      Carry:Shortint;
  begin
    P:=0;
    PotLt:=0;
    DecError:=false;
    if DecStr='.' then //如果以小数点为首的数字格式
      DecStr:='0'
    else begin
      If DecStr[1]='.' then DecStr:='0'+DecStr;
    end;
    //先判断数字是否合法
    for i:=1 to Length(DecStr) do begin
      if DecStr[i]='.' then begin
        P:=P+1;PotLt:=i;//记录小数点的个数和位置
      end;
      if ((DecStr[i]<'0') and (DecStr[i]<>'.')) or (DecStr[i]>'9') then begin
        DecError:=true;Break;   //判断有无非法字符
      end;
    end;
    if P>1 then DecError:=true;  //如果小数点超过1则数字非法
    if DecError then begin
      //showmessage('参数无效');
      Result:='';
      Exit;  //输入数字非法
    end;

    if P=0 then begin//如果为纯整数,直接输出
      Result:=DecStr;
      if FillZero then begin //如果需要补0,则补足小数部分的空位为0
        Result:=Result+'.';
        for i:=1 to digit do begin
          Result:=Result+'0';
        end;
      end;
      Exit;
    end;
    //如果存在小数,分别就整数段和小数段分析
    FrontStr:=Copy(DecStr,1,PotLt-1);
    TailStr:=Copy(DecStr,PotLt+1,Length(DecStr)-PotLt);
    //去掉小数部分后面的0字符
    while copy(Tailstr,Length(Tailstr),1)='0' do begin
      Tailstr:=Copy(Tailstr,1,Length(Tailstr)-1);
    end;
    //如果保留小数位数大于等于目前的小数位数
    if Digit>=Length(TailStr) then begin
      if FillZero then begin //如果需要补0,则补足小数部分的空位为0
        for i:=1 to Digit-Length(TailStr) do begin
          DecStr:=DecStr+'0';  //当保留位数大于,自动补0
        end;
      end;
      Result:=DecStr;
      Exit;
    end;
    TempStr:='';
    Carry:=0;
    if strtoint(TailStr[Digit+1])>=5 then Carry:=1;//进位
    //先从小数开始分析,四舍五入
    for i:=Digit Downto 1 do begin
      p:=strtoint(TailStr[i])+Carry;
      if p=10 then begin
        if Fillzero then  Tempstr:=Tempstr+'0';
        Carry:=1;
      end else begin
        Tempstr:=Tempstr+inttostr(p);
        if not Fillzero then begin
          if Tempstr='0' then Tempstr:='';//不想填0时,如果返回结果等于0,则清空结果
        end;
        Carry:=0;
      end;
    end;
    if Tempstr<>'' then  Tempstr:=Tempstr+'.';
    //小数部分分析完毕,开始分析整数部分
    for i:=length(FrontStr) downto 1 do begin
      p:=strtoint(FrontStr[i])+Carry;
      if p=10 then begin
        Tempstr:=Tempstr+'0';
        Carry:=1;
      end else begin
        Tempstr:=Tempstr+Inttostr(p);
        Carry:=0;
      end;
    end;
    if Carry=1 then Tempstr:=Tempstr+'1';//到最后还存在进位,则进1
    //处理所得到的结果字符串--倒置处理,得到最后的结果
    Result:='';
    for i:=Length(Tempstr) downto 1 do begin
      Result:=Result+Tempstr[i];
    end;
  end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -