FormatMoney: show full-precision values

This commit is contained in:
Gavin Andresen 2011-02-23 16:01:17 -05:00
parent 789259d2e7
commit 87504abb07
1 changed files with 12 additions and 3 deletions

View File

@ -313,9 +313,18 @@ void ParseString(const string& str, char c, vector<string>& v)
string FormatMoney(int64 n, bool fPlus)
{
n /= CENT;
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)
string str = strprintf("%.08f", double(n > 0 ? n : -n)/double(COIN));
// 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]))
str.insert(str.size() - i, 1, ',');
if (n < 0)