Jump to content
Larry Ullman's Book Forums

Formatting A Currency Amount Which Is In A Double - Script 3.1


Recommended Posts

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

 Share

×
×
  • Create New...