Necuima Posted August 13, 2013 Share Posted August 13, 2013 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. Link to comment Share on other sites More sharing options...
Larry Posted August 13, 2013 Share Posted August 13, 2013 Thanks for sharing! Link to comment Share on other sites More sharing options...
Necuima Posted August 13, 2013 Author Share Posted August 13, 2013 After playing around with this, it only works for numbers that fit into the numeric data types used. If you put in a too-large number, the result is garbage! Link to comment Share on other sites More sharing options...
Recommended Posts