FormatMoney: show full-precision values
This commit is contained in:
parent
789259d2e7
commit
87504abb07
1 changed files with 12 additions and 3 deletions
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)
|
||||
{
|
||||
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)
|
||||
|
|
Loading…
Reference in a new issue