I was interested to format the loan amount when the result of the mortgage repayment calculation is displayed and I came across this code (which I modified a little). And thanks to the author whose name I don't know.
It takes a value in a double and returns a string formatted for currency with two decimal places.
Thought I'd post it for what it's worth.
#include <string>
std::string formatCurrency(double dv)
{
const std::string radix = ".";
const std::string thousands = ",";
const std::string unit = "$";
unsigned long v = (unsigned long) ((dv * 100.0) + .5);
std::string fmt,digit;
int i = -2; // number of decimal places - DO NOT CHANGE!!
do {
if(i == 0) {
fmt = radix + fmt;
}
if((i > 0) && (!(i % 3))) {
fmt = thousands + fmt;
}
digit = (v % 10) + '0';
fmt = digit + fmt;
v /= 10;
i++;
}
while((v) || (i < 1));
std::string rv;
rv = unit + fmt;
return rv;
}
Cheers from Oz.