Notation exponentielle

La notation exponentielle est utile pour les nombres grands et petits.

La description précédente des nombres décrit des nombres purs , en ce sens que les chaînes de caractères qui décrivent les nombres peuvent être très longues. Par exemple :
10000000000 * 10000000000
donnerait
100000000000000000000
et
.00000000001 * .00000000001
donnerait
0.0000000000000000000001
Pour les grands et les petits nombres, une forme de notation exponentielle est utile, à la fois pour rendre les nombres longs plus lisibles et pour rendre l'exécution possible dans les cas extrêmes. En outre, la notation exponentielle est utilisée chaque fois que le formulaire simple fournit des informations trompeuses.
Par exemple :
numeric digits 5
say 54321*54321
affiche 2950800000 sous forme longue. Ceci est clairement trompeur et le résultat est donc exprimé sous la forme 2.9508E+9 à la place.
La définition des nombres est donc élargie comme suit:
Lire le diagramme de syntaxeIgnorer le diagramme de syntaxe graphique blanks signerblanksChiffresChiffres.Chiffres.ChiffresChiffres.EsignerChiffres blanks
L'entier qui suit le E représente une puissance de dix qui doit être appliquée au nombre. Le E peut être en majuscules ou en minuscules.

Certaines chaînes de caractères sont des nombres même si elles ne semblent pas être numériques pour l'utilisateur. Plus précisément, en raison du format des nombres en notation exponentielle, les chaînes, telles que 0E123 (0 élevé à la puissance 123) et 1E342 (1 élevé à la puissance 342), sont numériques. En outre, une comparaison telle que 0E123=0E567 donne un résultat réel de 1 (0 est égal à 0). Pour éviter les problèmes lors de la comparaison de chaînes non numériques, utilisez les opérateurs de comparaison stricts.

Voici quelques exemples :
12E7   =    120000000           /* Displays "1" */
12E-5  =    0.00012             /* Displays "1" */
-12e4  =    -120000             /* Displays "1" */
0e123  =    0e456               /* Displays "1" */
0e123  ==   0e456               /* Displays "0" */
Les nombres précédents sont valides pour les données d'entrée à tout moment. Les résultats des calculs sont renvoyés sous forme conventionnelle ou exponentielle, en fonction de la valeur de NUMERIC DIGITS. Si le nombre de décimales nécessaires avant la virgule dépasse DIGITS, ou si le nombre de décimales après la virgule dépasse deux fois DIGITS, la forme exponentielle est utilisée. La forme exponentielle générée par REXX comporte toujours un signe après E pour améliorer la lisibilité. Si l'exposant est 0, la partie exponentielle est omise, c'est-à-dire qu'une partie exponentielle de E+0 n'est jamais générée.

Vous pouvez explicitement convertir des nombres en forme exponentielle ou les forcer à être affichés sous forme longue à l'aide de la fonction intégrée FORMAT (voir FORMAT).

La notation scientifique est une forme de notation exponentielle qui ajuste la puissance de dix de sorte qu'un seul chiffre différent de zéro apparaît à gauche du séparateur décimal. La notation techniqueest une forme de notation exponentielle dans laquelle de un à trois chiffres (mais pas simplement 0) apparaissent avant le séparateur décimal, et la puissance de dix est toujours exprimée sous la forme d'un multiple de trois. La partie entière peut donc être comprise entre 1 et 999. Vous pouvez contrôler si la notation scientifique ou technique est utilisée avec l'instruction suivante:
Lire le diagramme de syntaxeIgnorer le diagramme de syntaxe graphique NUMERIC FORM SCIENTIFICENGINEERINGVALUEexpression ;
La notation scientifique est la valeur par défaut.
/* after the instruction */
Numeric form scientific

123.45 * 1e11     ->     1.2345E+13

/* after the instruction */
Numeric form engineering

123.45  * 1e11    ->    12.345E+12