Imprimer les nombres en notation scientifique en C

Jinku Hu 12 octobre 2023
  1. Utilisez le spécificateur de format %E pour imprimer des nombres en notation scientifique
  2. Utilisez le spécificateur de format %e pour imprimer des nombres en notation scientifique
Imprimer les nombres en notation scientifique en C

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:
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook