FormatFloat('0.#', 9.99);我想让这代码返回9.9,而不是10
怎么处理?

解决方案 »

  1.   

    uses StrUtils;procedure TForm1.FormCreate(Sender: TObject);
      function KeepDigitsAfterDecimalPoint(v: Extended; c: Byte): string;
      var
        i: Integer;
      begin
        Result := FloatToStr(v);
        i := Pos('.', Result);
        if i > 0 then
          if Length(Result) - i >= c then
            Result := Copy(Result, 1, i+c)
          else
            Result := Result + DupeString('0', c-(Length(Result) - i))  end;begin
    text:= KeepDigitsAfterDecimalPoint(9.99, 1)end;
      

  2.   

    将9.99转为string,然后copy,或leftstr
      

  3.   

    FormatFloat是4舍5入的,你要1位小数,后面的却丢掉;
    显示FormatFloat,Format,Round...等等这些函数都不能用。
    自己转换成字符串截取吧
      

  4.   

    用Trunc来取不要用Formatfloat,那样会自动四舍五入的。
    Edit1.text=‘9.99’;
    FloatToStr(Trunc(StrToFloat(edit1.Text)*10)/10);
      

  5.   

    更新一下
      function KeepDigitsAfterDecimalPoint(v: Extended; c: Byte): string;
      var
        i: Integer;
      begin
        Result := FloatToStr(v);
        i := Pos('.', Result);
        if i = 0 then
        begin
          Result := result + '.';
          i := Length(Result)
        end;    if c = 0 then
          Delete(Result, i, Maxint)
        else
          if Length(Result) - i >= c then
            Result := Copy(Result, 1, i+c)
          else
            Result := Result + DupeString('0', c-(Length(Result) - i))  end;