> >> Note that this requires compiler patching, because abs() > is internal > >> (it can be used in constant expressions). I would > personally argue to > >> do away entirely with the "treat currency as a floating > point type on > >> i386 so it can use the 80x87", and instead map it > implementation-wise > >> to int64 like on all other platforms. You may lose a bit of > >> performance, but you'll gain consistency. And you won't need hacks > >> like this (which, as mentioned before, only solves one particular > >> use-case, and so I'm not very much in favour of doing this). > > > > As far as I know, Currency is always a scaled int64, and didn't > > interpret the request as a request to change that. I missed > probably > > part of the argumentation but on the face of it, having a > > ABS(Currency) seems like a reasonable request. > > No, Currency is based on Extended on i386 and x86_64 (except win64!). > > Regards, > Sven >
There is also a lot of code in the rtl and fcl-db that supposes currency = double. Fe. Function CurrToStr(Value: Currency; Const FormatSettings: TFormatSettings): string; begin Result:=FloatToStrF(Value,ffGeneral,-1,0,FormatSettings); end; Or TCurrencyField = class(TFloatField) Ludo _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal