[fpc-devel] Question about Currency support
zhangfx at lemote.com
Tue Jun 5 02:47:39 CEST 2012
> In general, the type using which Pascal expressions are evaluated is
> completely independently from how the result is used afterwards.
> Currency is a special case because of all the scaling going on though.
> In addition to the resultdef, there's also the nf_is_currency node
> flag to determine whether or not the value still has to be scaled.
>> But for the typeconvnode, what is the result/left/right node?
> There is no right node in a typeconvnode, only a left node
> (ttypeconvnode inherits from tunarynode, not from binary node). Left
> is whatever you are converting from, and resultdef (once it has been
> set from ttypeconvnode.totypedef) is what you are converting to.
I see now.
another question, after switch to int64_to_floatxx, the code should be
correct, but there is another issue that can be reduced to:
i : currency;
i := 9.99;
frac(i) <> frac(9.99)
frac(i) will be 9.89999999999998E-001
tests/test/cg/taddcurr.pp still fail with this.
(gdb) p 9.99 * 10000.0 / 10000.0
$1 = 9.9899999999999967
Is it the test program taddcurr.pp cannot work for non-x86 systems?
More information about the fpc-devel