Un letterale numerico è una sequenza composta per la maggior parte di cifre costituite da uno o più dei seguenti caratteri: un numero intero, un punto decimale, un segmento frazionario, un indicatore esponenziale ("e" oppure "E") e un valore esponenziale eventualmente con segno. I seguenti sono tutti esempi di letterali numerici:
-12
1.5362
0.875
5,56e-2
1,234E10
È possibile omettere il numero intero o il segmento frazionario di un letterale numerico, ma non entrambi. Inoltre, all'interno del segmento frazionario, è possibile omettere il punto decimale o il valore esponenziale, ma non entrambi.
Tutti i letterali numerici sono convertiti internamente nei valori binari a 64 bit dell'Institute of Electrical and Electronics Engineers (IEEE). Tuttavia, i valori IEEE possono solo rappresentare una quantità finita di numeri, quindi alcuni valori non sono rappresentati come frazione binaria. Analogamente, alcuni valori come 1/3, non hanno una rappresentazione precisa come frazione decimale (il valore decimale avrà bisogno di un numero infinito di posti decimali per essere completamente accurato).
I valori che non hanno una frazione binaria equivalente sono generalmente letterali numerici con più di 16 cifre significanti prima dell'esponente. FormCalc arrotonda questi valori al più vicino valore rappresentabile IEEE a 64 bit in conformità con gli standard IEEE. Ad esempio, il valore:
123456789.012345678
viene arrotondato al valore (più vicino):
123456789.01234567
Tuttavia, in un secondo esempio, il letterale numerico:
99999999999999999
viene arrotondato al valore (più vicino):
100000000000000000
A volte questo funzionamento può restituire risultati imprevisti. FormCalc fornisce una funzione, Round, che restituisce un numero arrotondato a un numero definito di posizioni decimali. Quando è esattamente a metà tra due numeri rappresentabili, il numero dato è arrotondato in direzione opposta allo zero, ovvero è arrotondato per eccesso se positivo e per difetto se negativo. Per cui, nell'esempio seguente:
Round(0.124, 2)
restituisce 0,12,
e
Round(.125, 2)
restituisce 0,13.
In base a tale convenzione, ci si aspetterebbe che:
Round(0.045, 2)
restituisca 0,05.
Tuttavia, lo standard IEEE 754 stabilisce che il letterale numerico 0,045 venga approssimato a 0,0449999999999999. Questa approssimazione è più vicina a 0,04 che a 0,05. Quindi,
Round(0.045, 2)
restituisce 0.04.
Questo funzionamento è conforme allo standard IEEE 754.
I valori IEEE a 64 bit supportano rappresentazioni come NaN (non un numero), +Inf (infinito positivo), e -Inf (infinito negativo). FormCalc non supporta queste rappresentazioni, ed espressioni che corrispondono a qualsiasi risultato NaN, +Inf, o -Inf determinano un'eccezione di errore, che viene passata al resto dell'espressione.