sorry 
我从一本书上看的,我试了一下,好像没有

解决方案 »

  1.   

    如果用 i:=i-取整i的话得回来的数不精确!
      

  2.   

    var
    i:float;
    Answer,k,l:integer;
    c,d:string;
    begin
      c:=FloatToStr(i);
      d:='';
      for k:=length(c) down to 1 do
        if c[k]='.' then
          for l:=k+1 to length(c) do
            d:=d+c[l];
      Answer:=StrToInt(d);
    end;
       
      

  3.   

    to BS
    我试过用
    i :double
    frac(I)
    如果i:=83.78话 frac(i)=0.779999656
      

  4.   

    (可口可乐)的方法不错,如果小数位小于13位。这样会好一点:
    K:=Pos('.',c);
    Answer:=Copy(c,k+1,Length(c)-k);
    你们觉得呢?
      

  5.   

    var i :Extended; //把 i 定义成Extended 类型试试;i:=Frac(i);
      

  6.   

    那些都是近似值!如果是金额类型你可以使用 currency 型的