HOWTO · C

Imprimer les nombres en notation scientifique en C

Cet article présente comment imprimer des nombres en notation scientifique en C

Sur cette page

Cet article présentera plusieurs méthodes sur la façon d’imprimer des nombres en notation scientifique en C.

Utilisez le spécificateur de format %E pour imprimer des nombres en notation scientifique

La notation scientifique des nombres est largement utilisée pour représenter des valeurs énormes et petites avec une forme universelle concise. À savoir, chaque nombre est représenté par un seul avant la virgule décimale et une puissance de 10s. Même si cette notation est mathématiquement compatible aussi bien avec les entiers qu’avec les nombres réels, le spécificateur printf %E est destiné au type à virgule flottante. Notez que la représentation des exposants est suivie après la lettre E et le signe correspondant. Si la valeur de l’exposant est zéro, alors le format affiché est 00.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  float n1 = 15000000;
  float n2 = -15000000;
  double n3 = 25.2132;
  double n4 = 0.00001302;

  printf("n1 (%%f) - %f: \n", n1);
  printf("n1 (%%E) - %E: \n", n1);

  printf("n2 (%%f) - %f: \n", n2);
  printf("n2 (%%E) - %E: \n", n2);

  printf("n3 (%%f) - %f: \n", n3);
  printf("n3 (%%E) - %E: \n", n3);

  printf("n4 (%%f) - %f: \n", n4);
  printf("n4 (%%E) - %E: \n", n4);

  exit(EXIT_SUCCESS);
}

Production:

n1 (%f) - 15000000.000000:
n1 (%E) - 1.500000E+07:
n2 (%f) - -15000000.000000:
n2 (%E) - -1.500000E+07:
n3 (%f) - 25.213200:
n3 (%E) - 2.521320E+01:
n4 (%f) - 0.000013:
n4 (%E) - 1.302000E-05:

Utilisez le spécificateur de format %e pour imprimer des nombres en notation scientifique

Alternativement, le spécificateur de format %e a les mêmes caractéristiques que l’exemple précédent sauf que la lettre affichée est en minuscule sous la forme - [-]d.ddde±dd. Désormais, les spécificateurs de format %e et %E peuvent inclure un point décimal et un entier sur le côté droit de celui-ci pour indiquer le nombre d’emplacements à afficher. Si l’utilisateur ne fournit pas l’entier de précision, il est automatiquement défini sur 6 places. Comme le montre l’exemple de code suivant, les nombres à virgule flottante négatifs obtiennent simplement le symbole de signe comme notation décimale habituelle.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  float n1 = 15000000;
  float n2 = -15000000;
  double n3 = 25.2132;
  double n4 = 0.00001302;

  printf("n1 (%%f) - %f: \n", n1);
  printf("n1 (%%.2e) - %.2e: \n", n1);

  printf("n2 (%%f) - %f: \n", n2);
  printf("n2 (%%.1e) - %.1e: \n", n2);

  printf("n3 (%%f) - %f: \n", n3);
  printf("n3 (%%.2e) - %.2e: \n", n3);

  printf("n4 (%%f) - %f: \n", n4);
  printf("n4 (%%.1e) - %.1e: \n", n4);

  exit(EXIT_SUCCESS);
}

Production:

n1 (%f) - 15000000.000000:
n1 (%.2e) - 1.50e+07:
n2 (%f) - -15000000.000000:
n2 (%.1e) - -1.5e+07:
n3 (%f) - 25.213200:
n3 (%.2e) - 2.52e+01:
n4 (%f) - 0.000013:
n4 (%.1e) - 1.3e-05: