diff options
author | John Wiegley <johnw@newartisans.com> | 2004-07-18 04:24:49 -0400 |
---|---|---|
committer | johnw <johnw@newartisans.com> | 2004-07-18 04:24:49 -0400 |
commit | fde56d0f1214b8fb9de5ba4d42d683ed494c45b0 (patch) | |
tree | 7e49f494b2a9b2b57e3fab62ef12004a7d279c04 /amount.cc | |
parent | a8c4ecbc8ecd887d54a4aa5483580f2031dda205 (diff) | |
download | fork-ledger-fde56d0f1214b8fb9de5ba4d42d683ed494c45b0.tar.gz fork-ledger-fde56d0f1214b8fb9de5ba4d42d683ed494c45b0.tar.bz2 fork-ledger-fde56d0f1214b8fb9de5ba4d42d683ed494c45b0.zip |
fix to european number handling
Diffstat (limited to 'amount.cc')
-rw-r--r-- | amount.cc | 16 |
1 files changed, 8 insertions, 8 deletions
@@ -532,14 +532,6 @@ static commodity * parse_amount(mpz_t out, const char * num, result = pcre_copy_substring(num, ovector, matched, base + 3, buf, 255); assert(result >= 0); - // Determine the precision used - if (char * p = std::strchr(buf, '.')) - precision = std::strlen(++p); - else if (char * p = std::strchr(buf, '/')) - precision = std::strlen(++p) - 1; - else - precision = 0; - // Where "thousands" markers used? Is it a european number? if (char * p = std::strrchr(buf, ',')) { if (std::strchr(p, '.')) @@ -548,6 +540,14 @@ static commodity * parse_amount(mpz_t out, const char * num, european = true; } + // Determine the precision used + if (char * p = std::strchr(buf, european ? ',' : '.')) + precision = std::strlen(++p); + else if (char * p = std::strchr(buf, '/')) + precision = std::strlen(++p) - 1; + else + precision = 0; + // Parse the actual quantity std::string value_str = buf; |