Les littéraux sont des valeurs constantes qui forment la base de toutes les valeurs transmises à FormCalc pour traitement. Il existe deux grands types de littéraux : les nombres et les chaînes.
Un littéral numérique est une séquence composée surtout de chiffres ; elle comprend un ou plusieurs des caractères suivants : un entier, un point décimal, une fraction, un indicateur d’exposant (« e » ou « E ») et une valeur d’exposant avec signe facultatif. Voici quelques exemples de littéraux numériques :
Dans un littéral numérique, il est possible d’omettre la partie de l’entier ou de la fraction, mais non les deux. En outre, dans la partie de la fraction, on peut aussi omettre le point décimal ou la valeur de l’exposant, mais non les deux.
Tous les littéraux numériques sont convertis en interne en valeurs binaires 64 bits IEEE. Cependant, puisque les valeurs IEEE ne peuvent représenter qu’une quantité finie de nombres, certaines valeurs n’ont pas de représentation en fraction binaire. Cette situation est comparable au fait que certaines valeurs, comme 1/3, n’ont pas de représentation précise en fraction décimale (la valeur décimale aurait besoin d’un nombre infini de décimales pour être tout à fait exacte).
Ces valeurs qui ne possèdent pas d’équivalent en fraction binaire sont généralement les littéraux numériques comptant plus de 16 chiffres significatifs avant l’exposant. FormCalc arrondit ces valeurs à la valeur 64 bits IEEE représentable la plus proche selon les normes de l’IEEE. Par exemple, la valeur :
123456789.012345678
123456789.01234567
99999999999999999
100000000000000000
Cette façon de faire entraîne parfois des résultats surprenants. FormCalc possède une fonction, Round, qui renvoie le nombre indiqué arrondi au nombre indiqué de décimales. Lorsque le nombre indiqué est exactement à mi-chemin entre deux nombres représentables, il est arrondi au plus loin de zéro. Autrement dit, le nombre est arrondi à la hausse s’il est positif et à la baisse s’il est négatif. Considérez l’exemple suivant :
Round(0.124, 2)
renvoie 0.12,
Round(.125, 2)
renvoie 0.13.
Round(0.045, 2)
renvoie 0.05.
Cependant, la norme IEEE 754 stipule que le littéral numérique 0.045 reçoit la valeur approximative 0.0449999999999999. Cette approximation est plus près de 0.04 que de 0.05. C’est pourquoi :
Round(0.045, 2)
renvoie 0.04.
Les valeurs 64 bits IEEE reconnaissent les représentations comme NaN (” not a number “, n’est pas un nombre), +Inf (infini positif) et -Inf (infini négatif). FormCalc ne les gère pas ; toute expression dont l’évaluation a pour résultat NaN, +Inf ou -Inf entraîne une exception d’erreur, transmise au reste de l’expression.
“The cat jumped over the fence.”
“Number 15, Main street, California, U.S.A”
Le littéral chaîne “” définit une séquence vide (sans caractères) appelée chaîne vide.
“The message reads: “”Warning: Insufficient Memory”"”
Tous les caractères Unicode ont une séquence d’échappement de 6 caractères équivalente, composée de \usuivie de quatre chiffres hexadécimaux. Dans tout littéral chaîne, il est possible d’exprimer n’importe quel caractère, y compris les caractères de commande, au moyen de la séquence d’échappement Unicode équivalente. Par exemple :
“\u0047\u006f\u0066\u0069\u0073\u0068\u0021″
“\u000d” (carriage return)
“\u000a” (newline character)

Littéraux