From 7b591dd27a53f60aed7d2f6fe81d2953aa49b1b2 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Sat, 4 Mar 2006 17:07:15 +0000 Subject: *** no comment *** --- amount.cc | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/amount.cc b/amount.cc index 1fe2ecdd..5de0264c 100644 --- a/amount.cc +++ b/amount.cc @@ -810,14 +810,28 @@ std::ostream& operator<<(std::ostream& _out, const amount_t& amt) } if (precision) { - out << ((comm.flags & COMMODITY_STYLE_EUROPEAN) ? ',' : '.'); - - out.width(precision); - out.fill('0'); + out << ((comm.flags() & COMMODITY_STYLE_EUROPEAN) ? ',' : '.'); + std::ostringstream final; + final.width(precision); + final.fill('0'); char * p = mpz_get_str(NULL, 10, rquotient); - out << p; + final << p; std::free(p); + + const std::string& str(final.str()); + int i, len = str.length(); + const char * q = str.c_str(); + for (i = len; i > 0; i--) + if (q[i - 1] != '0') + break; + + if (i == len) + out << str; + else if (i < comm.precision()) + out << std::string(str, 0, comm.precision()); + else + out << std::string(str, 0, i); } if (comm.flags & COMMODITY_STYLE_SUFFIXED) { -- cgit v1.2.3