想把一个浮点型变成整型,要求是只要小数位有数,则结果都要变为大于该浮点型值的最小的整数,不想四舍五入,如
14.0------14
14.1------15
14.4------15
14.5------15
14.6------15
14.9------15
15.0------15

解决方案 »

  1.   

    var
      Dest : integer;
      Sour : Real;如果结果想是integer
    Dest := Round(Int(Sour+1));如果结果为Real
    直接用
    Int(Sour+1)
      

  2.   

    更正
    Dest := Round(Int(Sour+1));
    --->>
    Dest := Trunc(Sour+1);
      

  3.   

    日,还是没有对哦。要判断一下才行if Int(Sour)=Sour then
      Dest := Sour
    else
      Dest := Int(Sour+1);
      

  4.   

    uses
       math;function DRoundUp(Value:double;cnt:byte):double;
    var
       fTmp:double;
       nTmp:double;
       k:int64;
    begin
       Result:=Value;
       if cnt>18 then exit;
       nTmp:=Power(10.0,cnt);
       fTmp:=1;
       fTmp:=fTmp/nTmp;
       Result:=Result*nTmp;
       k:=0;
       asm
          fld qword ptr Result
          //__ftol begin
          push ebp
          mov ebp,esp
          LEA ESP,k
          wait
          fstcw word ptr [ebp-$04]
          wait
          mov al,[ebp-$03]
          or [ebp-$04],$00000c01
          fldcw word ptr [ebp-$04]
          fistp qword ptr [ebp-$0c]
          mov [ebp-$03],al
          fldcw word ptr [ebp-$04]
          mov eax ,[ebp-$0c]
          mov edx,[ebp-$08]
          mov esp,ebp
          pop ebp
          //__ftol end
          push esp
          lea esp,k
          mov [esp],eax
          add esp,4
          mov [esp],edx
          mov esp,ebp
          pop esp
          fild qword ptr k
          fstp qword ptr Result
          fld qword ptr nTmp
          fdivr qword ptr Result
          fstp qword ptr Result
       end;
       if Result<Value then Result:=Result+fTmp;
    end;
      

  5.   

    比如
    DRoundUP(14.0,0)
    RoundUP(14.1,0)
      

  6.   

    Delphi本身自带的Ceil函数就是干这个的. 有必要自己写?