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 🙂