Tag Archives: fortran format

Come formattare i numeri nel formato esponenziale nel Fortran


FORTRANPer formattare i numeri nel formato esponenziale nel Fortran si utilizza il descrittore E che ci consente di controllare la rappresentazione dei numeri nel formato esponenziale. La forma generale di tale descrittore è:

rEw.d

dove r,w e d assumono il seguente significato:

  • d = Numero di cifre da visualizzare a destra del punto decimale
  • r = Fattore di ripetizione: specifica il numero di volte che un descrittore deve essere utilizzato
  • w = Larghezza di campo: numero di caratteri da utilizzare

Per meglio comprendere il concetto appena esposto analizziamo allora il seguente esempio di istruzione di uscita formattata:

E15.5

che indica di rapresentare il numero in notazione esponenziale con 15 caratteri di cui 5 a destra del punto.

Quindi se dovessimo rappresentare il numero 5.37939E6 con il formato precedente avremmo:

       0.53794E+07
   ____|____|____|
       5   10    15

infatti occorrono:

  • 1 carattere per il segno della mantissa;
  • 2 caratteri per lo zero ed il punto decimale;
  • 5 caratteri per la mantissa;
  • 1 carattere per la lettera E;
  • 1 carattere per il segno dell’esponente;
  • 2caratteri per l’esponente;

per un totale di 12 caratteri, avendo utilizzato 15 caratteri rendiamo il tutto più leggibile.

In generale deve valere la seguente espressione:

w >= d+7

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Come formattare i numeri reali nel Fortran

FORTRANPer formattare i numeri reali nel Fortran si utilizza il descrittore F che ci consente di controllare la rappresentazione dei numeri reali. La forma generale di tale descrittore è:

rFw.d

dove r,w e d assumono il seguente significato:

  • d = Numero di cifre da visualizzare a destra del punto decimale
  • r = Fattore di ripetizione: specifica il numero di volte che un descrittore deve essere utilizzato
  • w = Larghezza di campo: numero di caratteri da utilizzare

Per meglio comprendere il concetto appena esposto analizziamo allora il seguente esempio di istruzione di uscita formattata:

2F8.3

che indica di ripetere per due variabili il formato di numero reale con l’utilizzo di 8 caratteri di cui 3 a destra del punto.

Quando viene stampato un numero reale, la sua parte intera viene stampato come se si utilizzasse il descrittre Im-(d+1). Pertanto, se il numero di posizioni non è sufficiente per stampare completamente la parte intera, tutte le posizioni w saranno riempite con asterischi. Si noti che la parte intera contiene un segno e di conseguenza w deve essere maggiore o uguale a d + 2.
La parte frazionaria può avere più di d cifre. In questo caso, la (D+1)-esima cifra sarà arrotondata alla desima cifra.

Come formattare i numeri reali nel Fortran

Ad esempio, se il numero 1,73 è stampato con il formato F3.1 (usando cioè 3 posizioni per stampare un numero reale con la posizione più a destra utilizzata per la parte frazionaria), poiché la seconda cifra della parte frazionaria è 3, il risultato sarà 1.7 in quanto l’ultima cifra è arrotondata per difetto. Tuttavia, se si stampa il numero 1,76 con lo stesso formato F3.1, il risultato diventa 1.8 perché l’ultima cifra è arrotondata per eccesso.

La parte frazionaria può avere meno di d cifre. In questo caso, verranno aggiunti degli zeri finali.
Si noti che d può essere zero. In questo caso, nessuna parte frazionaria verrà stampata. Più precisamente, la posizione più a destra è il punto decimale.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Come formattare i numeri interi nel Fortran


FORTRANPer formattare i numeri interi nel Fortran si utilizza ildescrittore I che ci consente di controllare la rappresentazione dei numeri interi. La forma generale di tale descrittore è:

rIw oppure rIw.m

dove r,w e m assumono il seguente significato:

  • m = Numero minimo di cifre da stampare
  • r = Fattore di ripetizione: specifica il numero di volte che un descrittore deve essere utilizzato
  • w = Larghezza di campo: numero di caratteri da utilizzare

Per meglio comprendere il concetto appena esposto analizziamo allora il seguente esempio di istruzione di uscita formattata:

INTEGER :: a = 1, b = -2  
WRITE(*,"(2I5.2)") a, b

Il descrittore di formato utilizzato è 2I5.2 che del tutto uguale a (I5.2,I5.2,) grazie all’utilizzo del contatore di ripetizione 2. Così, ognuna delledue variabili intere sarà restituita secondo quanto stabilito dallo specificatore I5.2 ottenendo così il risultato seguente:

___01__-02

Analizziamo nel dettaglio quanto appena scritto: abbiamo deciso di rappresentare le due varibili intere mediante lo stesso descrittore che ci impone di utilizzare almeno due cifre e cinque spazi. Allora per la varibile a che contiene il numero 1 abbiamo utilizzato le cifre 01 in quanto il descrittore ci imponeva l’utilizzo di almeno due cifre (ecco il significato della presenza dello zero), mentre abbiamo inserito tre spazi bianchi a sinistra del numero ( tre caratteri underscore _), in quanto occorrevano cinque spazi per rappresentare il numero così come indicato dal ddescrittore.

Come formattare i numeri interi nel FortranNelle operazioni di input i due descrittori Iw.m e Iw si comportano allo stesso modo in quanto gli eventuali spazi bianchi posizionati in testa al numero, inseriti per garantire la lunghezza del campo, vengono completamente ignorati.

Nelle operazioni di output invece il dato intero viene rappresentato in un campo di w caratteri con almeno m cifre, di cui le prime uguali a zero se il numero da rappresentare è composto da meno di m cifre. In tal caso, come specificato nell’esempio appena mostrato, la lunghezza del campo wviene garantita dall’inserimento di spazi bianchi. Nel caso invece il campo non fosse sufficiente per contenere tutte le cifre del valore intero da produrre, il campo sarà riempito con un numero di asterischi pari a w.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO: