假如我有一个小数点的数字如:asd.we
1:请问用什么方法可以得到小数点前三位的字符串和后两位的字符串
2:如何判断小数点前和后分别是几位字符

解决方案 »

  1.   

    trunc()  //取整数部分
    frac()   //取小数部分
      

  2.   

    //如果是字符串
    procedure TForm1.Button1Click(Sender: TObject);
    var
      str: string;
    begin
      //前提:一个小数点
      str := 'asdf.ghjk';
      ShowMessage('小数点前三位是:' + Copy(str, pos('.', str) - 3, 3));
      ShowMessage('小数点后两位:' + Copy(str, pos('.', str) + 1, 2));
      ShowMessage('小数点前' + IntToStr(Length(LeftStr(str, pos('.', str) - 1))) + '位');
      ShowMessage('小数点后' + IntToStr(Length(RightStr(str, Length(str) - pos('.', str)))) + '位');
    end;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    type
    TdataStr=Record
    fore1:string[3];
    real1:string[3];
    end;
    var
    sStr:TdataStr;
    function getstr(fData:string):TdataStr;
    var
      i,n:Integer;
      str:string;
    begin
      str := FloatTostr(fdata);
      n:= pos('.',str);
    //得到小数点前3位
      Result.fore1:= copy(str,n-3,3);
    //得到小数点后3位
      Result.real1:= copy(str,n+1,3);
    end;
    begin
      sStr:=getstr(strtoFloat(edit1.Text));
      edit2.Text:= sStr.fore1;
      edit3.Text:= sStr.real1;
    end;