Question

J'ai une double variable en C ++ et que vous souhaitez imprimer à l'écran comme un numéro de point décimal fixe.

En fait, je veux savoir comment écrire une fonction qui prend un double et un certain nombre de décimales et imprime le nombre à ce nombre de décimales, zéro padding si nécessaire.

Par exemple:

convert(1.235, 2)

imprimerait sur

1.24

et

 convert(1, 3)

imprimerait sur

1.000

la fonction fonctionne comme

convert(number as double, number of decimal places)

et affiche simplement la valeur requise pour la sortie standard (Cout).

Quelqu'un sait comment faire cela?

Merci à l'avance.

Était-ce utile?

La solution

En supposant que je me souviens de mes correctement les chaînes de format,

printf("%.*f", (int)precision, (double)number);

Autres conseils

Regardez le SetPrecision manipulateur qui devrait vous donner l'idée

Il n'y a pas une telle chose comme un certain nombre « place décimale fixe ». La fonction de conversion devra être la fonction qui imprime réellement dehors. Je vous conseille de prendre toute la partie du nombre, puis l'imprimer. Si [décimales]> 0 puis imprimer une place décimale, puis imprimer chaque décimale individuellement comme: floor((n*log(10,d))%10); <-. Juste une idée, pas de code réel

#include <iomanip>
#include <iostream.h>

// print a float, x places of precision 
void convert (double number, int x)
{
    cout << setprecision(x) << number << endl;
}

int main()
{
    double a = 1.234;
    convert (a,2);
} 

sortie: 1,23

référence

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top