On Thu, 11 Mar 2004 12:32:24 +0200 "Andrew J.Swan \[home\]" <[EMAIL PROTECTED]> wrote:
> * Hi Fpc-list, > > 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 ] ----- > > ,----- [ FPC: ] > | 0 00000001 > | [...] > | 30 40000000 > | An unhandled exception occurred at 0x004109D1 : > | EINVALIDOP : Invalid floating point operation > | 0x004109D1 > | 0x0006FF78 > | 0x8D000CC2 > `----- > ,----- [ Delphi: ] > | 0 00000001 > | [...] > | 30 40000000 > | 31 80000000 > `----- > > 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 care about the overflow. What happens in delphi if the formatstring is '%d %d'? HTH, Vincent. _______________________________________________ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal