[fpc-pascal]Bug or not Bug
Thomas Schatzl
tom_at_work at gmx.at
Thu Mar 11 13:20:03 CET 2004
Hello,
> > I'm having trouble using Round:
> > ----- [ BOF: test.pas ] -----
> > Program Test ;
> > Uses
> > Math, SysUtils ;
> >
> > Var
> > i : Byte ;
> > Begin
> > For i := 0 to 31 do
> > WriteLn(Format('%d %.8x',[i,Round(Ldexp(1,i))])) ;
> > End.
> > ----- [ EOF: test.pas ] -----
> >
> > ... snip ...
> >
> > Any idea ?
>
> Round returns a longint. The range of a longint is -2^31 .. (2^31-1).
> The result you had (2^31) doesn't fit in a longint, so this is not a fpc
bug.
>
> As I don't have Delphi, I don't know why Delphi doesn't give an error. It
could
> be that the Delphi's return value is int64 or cardinal. Or it simply
doesn't
Delphi's round() returns an int64.
> care about the overflow. What happens in delphi if the formatstring is '%d
%d'?
%d just indicates that the given value is an integer - the format function
itself does not limit the number of digits (or the range of the given value)
in this case.
Regards,
Thomas
More information about the fpc-pascal
mailing list