2010-10-02 19 views
4

J'ai une double variable en C++ et je veux l'imprimer à l'écran sous la forme d'un nombre décimal fixe.Convertir une virgule décimale en C++

Fondamentalement, 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, le remplissage de zéro si nécessaire.

Par exemple:

convert(1.235, 2) 

aurait imprimer

1.24 

et

convert(1, 3) 

serait imprimer

1.000 

si la fonction fonctionne comme

convert(number as double, number of decimal places) 

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

Est-ce que quelqu'un sait comment faire cela?

Merci d'avance.

+0

http://www.cplusplus.com/reference/iostream/manipulators/setprecision/ – Anycorn

Répondre

5

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

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

grand merci pour le code –

0

Il n'y a pas une telle chose comme un certain nombre « de chiffres après la virgule ». La fonction de conversion devra être la fonction qui l'imprime réellement. Je suggère d'obtenir toute la partie du numéro, puis imprimez-le. Si [décimales]> 0, imprimez une décimale, puis imprimez chaque décimale comme: floor((n*log(10,d))%10); < - juste une idée, pas un code réel.

-1
#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

reference

+0

Tout simplement faux comme [cette réponse] (http://stackoverflow.com/a/13729528/1396334). – Avio