比如需要三个小数点的精度,超过三个小数自动节减为3位小数
只有一位小数则只显示一位,有两位则只显示两位,没有小数则显示为整数,不能以零补充三位。

解决方案 »

  1.   

    要自己写函数处理:先在单元uses中加入Math
    参数说明:
    InReal:取整浮点数
    Len:小数位数
    RoundOrTrunc:0:是四舍五入;1:截断,2: 有小数时向上取整
    function RoundReal(InReal: real; Len: integer; RoundOrTrunc: integer=0): real;
    var
      I, numb: integer;
      str: string;
    begin
      try
        numb := 1;
        for i := 0 to len - 1 do
          numb := numb * 10;
        if RoundOrTrunc = 0 then //四舍五入
          result := Round(InReal * numb) / numb
        else
          if RoundOrTrunc = 1 then //截断
          begin
            Str := FloatToStr(InReal * numb);
            if pos('.', Str) = 0 then
              Result := InReal
            else
            begin
              Str := Copy(str, 0, pos('.', Str) - 1);
              result := StrToFloat(Str) / numb;
            end;
          end
          else //2: 有小数时向上取整,返回一个整数。
            result := Ceil(InReal);
      except
        ShowMessage('浮点型数据转换错误!');
      end;
    end;