Object Pascal

Reali                  

Tra i tipi reali distinguiamo 6 sottotipi:

Tabella 5.1  
Tipo Specifiche
Real Definiti su 4 o 8 byte - precisione dipendente dalla piattaforma
Single Definiti su 4 byte - 7 o 8 decimali significativi - range 1.5E-45 .. 3.4E38
Double Definiti su 8 byte - 15 o 16 decimali significativi - range 5.0E-324 .. 1.7E308
Extended Definiti su 10 byte - 19 o 20 decimali significativi - range 1.9E-4951 .. 1.1E4932
Comp Definiti su 8 byte - 19 0 20 decimali significativi
Currency Definiti su 8 byte - 19 0 20 decimali significativi

Il tipo comp, in realtà, è un intero a 64 bit ed in questo modo potete considerarlo, eventualmente approfondiremo la cosa altrove, Ovviamente è disponibile solo su piattaforme su 64 bit ed ha il range -2E64+1 .. 2E63-1. In effetti si tratta di un tipo molto particolare che non prevede parte frazionale. Il tipo currency è un tipo in virgola definito internamente come intero su 64 bit. Questo tipo ha un range che si estende nell'intervallo -922337203685477.5808...922337203685477.5807 e, come si nota dal range stesso, ha una precisione fissata a 4 cifre decimali.
La sintassi per rappresentare un numero reale sostanzialmente ha 3 formati:

1) segno cifre.cifre
2) segno cifre.cifra E segno cifre
3) segno cifre E segno cifre

dove ovviamente, come in altri linguaggi, E indica la presenza del formato esponenziale mentre le cifre stanno per i numeri tra 0 e 9. Quindi, ad esempio:

3.5 è conforme alla definizione 1)
3.00001E4 si rifà alla 2) e sta per 3000,1

Vediamo all'opera i vari tipi con un esempio di base facilmente modificabile:

  Esempio 5.1
  program Project1;
var x01 : Real;
    x02 : Real;
    x03: Real;
begin
  x01 := 3.0;
  x02 := 7.0;
  x03 := x02 / x01;
  Writeln(x03);
  Readln();
end.

output:

 2.33333333333333E+000

Se al tipo Real sostituiamo il tipo Single otteniamo:

 2.333333254E+00

con il Double

 2.33333333333333E+000

con l'Extended

 2.3333333333333333E+0000

con il Comp:

 2.00000000000000E+0000

con il Currency

 2.333300000000000000E+00

Dal punto di vista delle operazioni non ci sono particolarità rispetto ai numeri interi visti in precedenza, valgono gli stessi simboli per le operazioni di base mentre non è ovviamente previsto il resto per la divisione. Interessante invece può essere il confornto tra due numeri con virgola. Come verificarne l'uguaglianza? Molte volte non avrete problemi usando il semplice operatore di uguaglianza (=) ma ricordate sempre esiste il metodo di confronto che fa uso della funzione abs, definita in Math:

Abs(n1 - n2) < ε con quest'ultimo definito piccolo a piacere.