gnc_numeric: fractional displays and rounding

Charles Day cedayiv at
Wed Jul 30 20:22:01 EDT 2008


You may have noticed that I have committed the new decimal conversion
function to gnc_numeric.c (r17421) and made a few fixes based on it.

However, I noticed that sometimes fractions print with weird rounding. For
example, if the print_info settings specify rounding and force_fit, the
fraction "1/3" could print as "0 + 200003/600000". It seems that rounding is
applied to non-decimal numbers but force_fit is not. This doesn't make sense
to me. Why would you do decimal rounding on something you intend to print as
a fraction?

On the other hand, if force_fit is supposed to make any value print in
decimal form, then the following patch does that.

What do you think?


Index: gnc-ui-util.c
--- gnc-ui-util.c       (revision 17429)
+++ gnc-ui-util.c       (working copy)
@@ -1382,8 +1382,9 @@

   /* at this point, buf contains the whole part of the number */

-  /* If it's not decimal, print the fraction as an expression */
-  if (!gnc_numeric_to_decimal(&val, NULL))
+  /* If it's not decimal, and we're not forcing it to become
+   * decimal, then print the fraction as an expression. */
+  if (!info->force_fit && !gnc_numeric_to_decimal(&val, NULL))
     if (!gnc_numeric_zero_p (val))

More information about the gnucash-devel mailing list