r23727 - gnucash/trunk/src/engine - Fix rounding problems in conversions. Fixes bug #454827.
Mike Alexander
mta at code.gnucash.org
Mon Jan 20 00:08:48 EST 2014
Author: mta
Date: 2014-01-20 00:08:47 -0500 (Mon, 20 Jan 2014)
New Revision: 23727
Trac: http://svn.gnucash.org/trac/changeset/23727
Modified:
gnucash/trunk/src/engine/gnc-pricedb.c
Log:
Fix rounding problems in conversions. Fixes bug #454827.
Modified: gnucash/trunk/src/engine/gnc-pricedb.c
===================================================================
--- gnucash/trunk/src/engine/gnc-pricedb.c 2014-01-20 01:55:11 UTC (rev 23726)
+++ gnucash/trunk/src/engine/gnc-pricedb.c 2014-01-20 05:08:47 UTC (rev 23727)
@@ -2028,7 +2028,7 @@
{
balance = gnc_numeric_mul (balance, gnc_price_get_value (price),
gnc_commodity_get_fraction (new_currency),
- GNC_HOW_RND_ROUND_HALF_UP);
+ GNC_HOW_RND_ROUND);
gnc_price_unref (price);
return balance;
}
@@ -2041,7 +2041,7 @@
{
balance = gnc_numeric_div (balance, gnc_price_get_value (price),
gnc_commodity_get_fraction (new_currency),
- GNC_HOW_RND_ROUND_HALF_UP);
+ GNC_HOW_RND_ROUND);
gnc_price_unref (price);
return balance;
}
@@ -2097,7 +2097,7 @@
GNC_HOW_DENOM_EXACT | GNC_HOW_RND_NEVER);
balance = gnc_numeric_mul (balance, gnc_price_get_value (price),
gnc_commodity_get_fraction (new_currency),
- GNC_HOW_RND_ROUND_HALF_UP);
+ GNC_HOW_RND_ROUND);
gnc_price_list_destroy(price_list);
return balance;
@@ -2125,7 +2125,7 @@
{
balance = gnc_numeric_mul (balance, gnc_price_get_value (price),
gnc_commodity_get_fraction (new_currency),
- GNC_HOW_RND_ROUND_HALF_UP);
+ GNC_HOW_RND_ROUND);
gnc_price_unref (price);
return balance;
}
@@ -2138,7 +2138,7 @@
{
balance = gnc_numeric_div (balance, gnc_price_get_value (price),
gnc_commodity_get_fraction (new_currency),
- GNC_HOW_RND_ROUND_HALF_UP);
+ GNC_HOW_RND_ROUND);
gnc_price_unref (price);
return balance;
}
@@ -2178,8 +2178,8 @@
/* here we need the reciprocal */
currency_price_value = gnc_numeric_div(gnc_numeric_create(1, 1),
gnc_price_get_value(currency_price),
- gnc_commodity_get_fraction (new_currency),
- GNC_HOW_RND_ROUND_HALF_UP);
+ GNC_DENOM_AUTO,
+ GNC_HOW_DENOM_EXACT | GNC_HOW_RND_NEVER);
gnc_price_unref(currency_price);
}
}
@@ -2190,12 +2190,12 @@
(gnc_numeric_zero_p(currency_price_value)));
balance = gnc_numeric_mul (balance, currency_price_value,
- gnc_commodity_get_fraction (new_currency),
- GNC_HOW_RND_ROUND_HALF_UP);
+ GNC_DENOM_AUTO,
+ GNC_HOW_DENOM_EXACT | GNC_HOW_RND_NEVER);
balance = gnc_numeric_mul (balance, gnc_price_get_value (price),
gnc_commodity_get_fraction (new_currency),
- GNC_HOW_RND_ROUND_HALF_UP);
+ GNC_HOW_RND_ROUND);
gnc_price_list_destroy(price_list);
return balance;
More information about the gnucash-changes
mailing list