web-dev-qa-db-fra.com

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

J'essaie d'écrire un nombre avec deux décimales à l'aide de printf() comme suit:

#include <cstdio>
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 le résultat suivant:

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

Pourquoi donc?

Merci.

56
aali

Ce que tu veux c'est %.2f, ne pas 2%f.

Aussi, vous voudrez peut-être remplacer votre %d avec un %f;)

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

Cela produira:

Lorsque ce numéro: 94.945600 est attribué à 2 dp, il sera: 94.95

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

119
badgerr

Utilisez: "%.2f" Ou des variantes.

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

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

6
Jonathan Leffler

Pour %d la partie fait référence à ceci Comment fonctionne ce programme? et pour les décimales, utilisez %.2f

4
Rozuur