Deux décimales à l’aide de printf ()

J’essaie d’écrire un nombre à deux décimales en utilisant printf() comme suit:

 #include  int main() { printf("When this number: %d is assigned to 2 dp, it will be: 2%f ", 94.9456, 94.9456); return 0; } 

Lorsque je lance le programme, j’obtiens la sortie suivante:

 # ./printf When this number: -1243822529 is assigned to 2 db, it will be: 2-0.000000 

Pourquoi donc?

Merci.

Ce que vous voulez est %.2f , pas 2%f .

En outre, vous pouvez remplacer votre %d par %f 😉

 #include  int main() { printf("When this number: %f is assigned to 2 dp, it will be: %.2f ", 94.9456, 94.9456); return 0; } 

Cela va sortir:

Lorsque ce nombre: 94.945600 est assigné à 2 dp, ce sera: 94.95

Voir ici pour une description complète des options de formatage printf : printf

Utilisez: "%.2f" ou des variantes à cela.

Voir la spécification POSIX pour une spécification faisant autorité des chaînes de format printf() . Notez qu’il sépare les extras POSIX de la spécification C99 principale. Certains sites C ++ apparaissent dans une recherche Google, mais certains ont au moins une réputation douteuse, à en juger par les commentaires publiés ailleurs sur SO.

Puisque vous codez en C ++, vous devriez probablement éviter printf() et ses proches.

Pour %d partie se référer à cela Comment fonctionne ce programme? et pour les décimales, utilisez %.2f

Essayez d’utiliser un format comme% d.% 02d

 int iAmount = 10050; printf("The number with fake decimal point is %d.%02d", iAmount/100, iAmount%100); 

Une autre approche consiste à taper le cast pour le doubler avant de l’imprimer en utilisant% f comme ceci:

 printf("The number with fake decimal point is %0.2f", (double)(iAmount)/100); 

Mes 2 centimes 🙂