[fpc-pascal] Inconsistent results currency - extended ?

LacaK lacak at zoznam.sk
Tue Apr 29 10:22:44 CEST 2014


Hi,
I catch strange behavior, which I can not understand ;-)

I have 2 PC on both I have installed Lazarus 1.2.2 + FPC 2.6.4 (official 
release)

1st PC has Windows 98 2nd PC has Windows Vista (32 bit)

I have this program:
=============================
var
  c: currency;
  e: extended;
begin
  c:=-92233720368547;
  e:=c;
  writeln('CW=', Get8087cw(), ' currency=', c, ' extended=', e, ' 
string=', currtostr(c));
=============================

When I compile on 1st PC (Win98) and run it on 1st or 2nd PC I get this 
result:
CW=4978 currency=-9.223372036854699520E+13 
extended=-9.2233720368546995E+0013 string=-92233720368546,9952

When I compile on 2nd PC (Win Vista) and run on 1st or 2nd PC I get 
(expected) result:
CW=4978 currency=-9.223372036854700000E+13 
extended=-9.2233720368547000E+0013 string=-92233720368547

How is it possible?
Is compiled code somehow affected by platform on which is compilation 
performed?

Thanks
-Laco.




More information about the fpc-pascal mailing list