Stampa numeri in notazione scientifica in C

Jinku Hu 12 ottobre 2023
  1. Usa l’identificatore di formato %E per stampare i numeri nella notazione scientifica
  2. Usa l’identificatore di formato %e per stampare i numeri nella notazione scientifica
Stampa numeri in notazione scientifica in C

Questo articolo illustrerà più metodi su come stampare i numeri nella notazione scientifica in C.

Usa l’identificatore di formato %E per stampare i numeri nella notazione scientifica

La notazione scientifica per i numeri è ampiamente utilizzata per rappresentare valori piccoli e grandi con una forma universale concisa. Vale a dire, ogni numero è rappresentato con un singolo prima del punto decimale e la potenza di 10s. Anche se questa notazione è matematicamente compatibile sia con gli interi che con i numeri reali, l’identificatore printf %E è inteso per il tipo a virgola mobile. Notare che la rappresentazione degli esponenti è seguita dalla lettera E e dal segno corrispondente. Se il valore dell’esponente è zero, il formato visualizzato è 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);
}

Produzione:

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:

Usa l’identificatore di formato %e per stampare i numeri nella notazione scientifica

In alternativa, l’identificatore di formato %e ha le stesse caratteristiche dell’esempio precedente tranne che la lettera visualizzata è minuscola nella forma di - [-]d.ddde±dd. Ora, sia gli identificatori di formato %e che %E possono includere un punto decimale e un numero intero sul lato destro per indicare quante posizioni visualizzare. Se l’utente non fornisce il numero intero di precisione, viene impostato automaticamente su 6 posizioni. Come mostrato nell’esempio di codice seguente, i numeri a virgola mobile negativi ottengono semplicemente il simbolo del segno come la normale notazione decimale.

#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);
}

Produzione:

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:
Autore: 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