Bug 797106: Do a better job of converting decimal prices to rationals.

Use the Scheme rationalize method to convert the decimal numbers
from Finance::Quote to ratinal numbers.  This avoids rediculous
precision like 8515625000000001/3906250000000000 for 2.18.
This commit is contained in:
Mike Alexander 2019-02-16 19:27:35 -05:00 committed by Christopher Lam
parent c6ac5e2c09
commit d4af5244d0

View File

@ -404,12 +404,13 @@
(else #f)))
(if price
;; The second argument to inexact->exact is chosen to give reasonable values
;; for prices between .12345e-9 and 12345678.87654
;; inexact->exact is probably not necessary but it can't hurt and is cheap.
(set! price
(double-to-gnc-numeric price
GNC-DENOM-AUTO
(logior GNC-DENOM-REDUCE
GNC-RND-NEVER))))
(gnc-scm-to-numeric
(rationalize (inexact->exact price) 1/1000000000000000))))
(if gnc-time
(set! gnc-time (timestr->time64 gnc-time time-zone))
(set! gnc-time (gnc:get-today)))