|
|
|
@ -313,9 +313,18 @@ void ParseString(const string& str, char c, vector<string>& v)
@@ -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) |
|
|
|
|