Having problem to monetary-collector

Derek Atkins derek@ihtfp.com
26 Feb 2002 11:15:49 -0500


Christian Stimming <stimming@tuhh.de> writes:

> > ;; debug output of the values going in
> > (gnc:debug (c 'getpair currency #f))   -> (#<gw:wcp <gnc:commodity*>
> > 0x81acb38> #<<gnc-numeric> num: -40950 denom: 100>)
> > (gnc:debug (gnc:split-get-amount s))
> >   -> #<<gnc-numeric> num: 3709000 denom: 100000>
> > ;; Add them up
> > (c 'add currency (gnc:split-get-amount s))
> > ;; Display to output
> > (gnc:debug (c 'getpair currency #f))
> >   -> (#<gw:wcp <gnc:commodity*> 0x81acb38> #<<gnc-numeric> num: -3 denom: 0>)
> > Huh?
> > -40950/100 + 3709000/100000  !=  -3/0
> > Two possibilities:
> > 1. It doesn't like the differing denominators
> > 2. It doesn't like the differing signs
> 
> Oh, wasn't a zero denominator supposed to signal an gnc-numeric error
> anyway? Because a zero denominator doesn't make any sense in the first

Indeed, the 0 denominator implies "error".  I think the problem is #1,
it doesn't like the differing denominators.

IMHO this is a bug (or at least a misfeature) in the gnc-numeric:
addition and subtraction have to be done in a common demoninator, as
opposed to having the system create the LCD.  There are two sets of
'add' and 'subtract' functions -- the fixed versions assume that the
denominators are already the same, the other versions require you to
supply your result denominator.  I suspect that the currency collector
is using the 'fixed' version and your test case is breaking that
assumption by supplying a different denominator.

FTR, I ran into this problem on the C side a few months ago.

> Christian

-derek

-- 
       Derek Atkins
       Computer and Internet Security Consultant
       derek@ihtfp.com             www.ihtfp.com