Browse Source

FormatMoney: show full-precision values

0.8
Gavin Andresen 14 years ago
parent
commit
87504abb07
  1. 15
      util.cpp

15
util.cpp

@ -313,9 +313,18 @@ void ParseString(const string& str, char c, vector<string>& v)
string FormatMoney(int64 n, bool fPlus) string FormatMoney(int64 n, bool fPlus)
{ {
n /= CENT; string str = strprintf("%.08f", double(n > 0 ? n : -n)/double(COIN));
string str = strprintf("%"PRI64d".%02"PRI64d, (n > 0 ? n : -n)/100, (n > 0 ? n : -n)%100);
for (int i = 6; i < str.size(); i += 4) // Right-trim excess 0's before the decimal point:
int nTrim = 0;
for (int i = str.size()-1; (str[i] == '0' && isdigit(str[i-2])); --i)
++nTrim;
if (nTrim)
str.erase(str.size()-nTrim, nTrim);
// Insert thousands-separators:
size_t point = str.find(".");
for (int i = (str.size()-point)+3; i < str.size(); i += 4)
if (isdigit(str[str.size() - i - 1])) if (isdigit(str[str.size() - i - 1]))
str.insert(str.size() - i, 1, ','); str.insert(str.size() - i, 1, ',');
if (n < 0) if (n < 0)

Loading…
Cancel
Save