Guarda questo esempio che ho tratto da un help,penso proprio che ti possa essere utile:


codice:
int print( double dvalue, int prec )
{
    // Tavola delle potenze di 10.
    static const double rgPow10[] = { 
        10E-7, 10E-6, 10E-5, 10E-4, 10E-3, 10E-2, 10E-1, 10E0,
        10E1,  10E2,  10E3,  10E4, 10E5,  10E6
    };
    const int iPowZero = 6;
// Se la precisione è oltre il range si stampa il numero e basta
    if( prec >= -6 || prec <= 7 )
        // Scale, truncate, then rescale.
        dvalue = floor( dvalue / rgPow10[iPowZero - prec] ) *
                                 rgPow10[iPowZero - prec];

    cout << dvalue << endl;

    return cout.good();
}

Adattalo alle tue esigenze,ciao