[fpc-pascal] Inconsistent results currency - extended ?

LacaK lacak at zoznam.sk
Wed Apr 30 06:30:33 CEST 2014


>   Your code does not even compile on
> my 2.6.4 installation (no Lazarus).
>
>   Where does the currtostr function come from?
> Apparently from sysutils unit.
>   
Yes from SysUtils

> How is it 'included' without any uses clause?
> I found no option that automatic 
> add unit sysutils.
>
>   Could you give us a source and a compilation command line
> that does not require Lazarus use?
>   
Source code attached.
Command line parameters:  -MObjFPC -Scghi -O1 -Twin32 -Pi386 -g -gl 
-vewnhi -Filib\i386-win32 -Fu. -FUlib\i386-win32 -l
(taken from Lazarus as I never have used only standalone compiler , 
without Lazarus IDE)

========= PROGRAM ==============
program test_Currency;
{$mode objfpc}{$H+}
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  SysUtils;

var
  s: string;
  c: currency;
  e: extended;
  d: double;
  i64: int64;

begin
  c:=-92233720368547;
  d:=-92233720368547;
  e:=c;
  i64:=PInt64(@c)^;

  writeln('CW=', Get8087cw());
  writeln('currency=', c);
  writeln('extended=', e);
  writeln('string=', currtostr(c));
  writeln('int64=', i64);
  writeln('double=', d);
  readln;
end.
================================

When I compile on Win98 and run (it does not depend if it is ran on 
Win98 or XP or Vista) output is same:
=========== OUTPUT 1 ===========
CW=4978
currency=-9.223372036854699520E+13
extended=-9.2233720368546995E+0013
string=-92233720368546,9952
int64=-922337203685469952
double=-9.22337203685470E+013
================================
It seems (based on "i64" variable), that currency "c" is wrong 
initialised with "-92233720368546.9952"
On other side double is correct "-92233720368547"

When I compile on Win Vista and run (it does not depend if it is Win98 
or XP or Vista) output is correct (as expected):
=========== OUTPUT 2 ============
CW=4978
currency=-9.223372036854700000E+13
extended=-9.2233720368547000E+0013
string=-92233720368547
int64=-922337203685470000
double=-9.22337203685470E+013
================================

Thanks
-Laco.
>
> Pierre Muller
>
>   
>> -----Message d'origine-----
>> De : fpc-pascal-bounces at lists.freepascal.org [mailto:fpc-pascal-
>> bounces at lists.freepascal.org] De la part de LacaK
>> Envoyé : mardi 29 avril 2014 10:23
>> À : FPC-Pascal users discussions
>> Objet : [fpc-pascal] Inconsistent results currency - extended ?
>>
>> 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.
>>
>> _______________________________________________
>> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
>> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
>>     
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
>
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20140430/c2863b4d/attachment.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: test_Currency.lpr
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20140430/c2863b4d/attachment.ksh>


More information about the fpc-pascal mailing list