指数表記法

これまでに述べた数値の説明では、数値を記述する文字ストリングが非常に長くなる可能性があるという意味で「純粋な」数値を取り上げてきました。例えば、次のようになります。
10000000000 * 10000000000
は、次のようになります。
100000000000000000000
また、
.00000000001 * .00000000001
は、次のようになります。
0.0000000000000000000001

大きい数、小さい数どちらの場合にも、長い数値を 読みやすくするためと、極端な場合は実行できるようにするための両方について、 ある種の指数表記法は便利です。 さらに、「単純な」形式では誤解しやすい情報を与える恐れのあるとき は常に、指数表記法が使用されます。

例えば、次のようになります。
numeric digits 5
say 54321*54321

長形式では 2950800000 と表示されます。 これは、明らかに間違いやすいので、結果は、2.9508E+9 として表されます。

したがって、数値の定義は、以下のように拡張されます。
構文図を読む構文図をスキップする
>>-+--------+--+-----------------+--+-digits--------+----------->
   '-blanks-'  '-sign-+--------+-'  +-digits.digits-+   
                      '-blanks-'    +-.digits-------+   
                                    '-digits.-------'   

>--+-------------------+--+--------+---------------------------><
   '-E-+------+-digits-'  '-blanks-'   
       '-sign-'                        

E の後の整数は、その数値に適用される 10 の累乗を表します。E は、大文字小文字どちらでもかまいません。

ユーザーには数値とは見えなくても、数値であるような特定の文字ストリングがあります。例えば、指数表記の数値のフォーマット であるため、0E123 (0 掛ける 10 の 123 乗) と 1E342 (1 掛ける 10 の 342 乗) というストリングは数値です。さらにまた、 0E123=0E567 という比較は、1 (0 は 0 に等しい) という 真の結果になります。 非数値のストリングを比較するときは、問題を避けるために厳密比較演算子を 使用してください。

以下にいくつか例を挙げます。
12E7   =    120000000           /* Displays "1" */
12E-5  =    0.00012             /* Displays "1" */
-12e4  =    -120000             /* Displays "1" */
0e123  =    0e456               /* Displays "1" */
0e123  ==   0e456               /* Displays "0" */

上述の数値は、入力データについては常に有効です。 計算の結果は、NUMERIC DIGITS の設定値に応じて、従来の形式または指数形式 のいずれかで戻されます。 小数点以上の桁数が、DIGITS を超えているか、または小数点以下 の桁数が DIGITS の 2 倍を超えていると、その数は、指数形式が使用されます。 REXX が生成する指数形式では、常に E の後に符号が付けられて、 読みやすくなっています。 指数が 0 の場合は、指数部分は省略されます (つまり、 E+0 という指数部は生成されません)。

FORMAT 組み込み関数を使用すれば、数値を指数形式に明示的に変換したり、あるいは、 それらを強制的に長形式で表示させることができます (FORMAT ページを参照してください)。

科学計算表記法は、指数表記法の 1 つであり、小数点の左側がゼロ以外の 1 個の数字になるように、10 の累乗で調整されたものです。技術計算表記法は、指数表記法の 1 つであり、1 桁から 3 桁の数字 (ただし、単なる 0 は除く) が小数点の前にあり、10 の累乗が常に 3 の倍数として表されます。したがって、整数の部分は 1 から 999 の範囲に なります。 科学計算、技術計算表記のどちらを使用するかを、次の命令を用いて制御できます。
構文図を読む構文図をスキップする
                 .-SCIENTIFIC-----------.      
>>-NUMERIC FORM--+----------------------+--;-------------------><
                 +-ENGINEERING----------+      
                 '-+-------+-expression-'      
                   '-VALUE-'                   

科学計算表記がデフォルトです。
/* after the instruction */
Numeric form scientific

123.45 * 1e11     ->     1.2345E+13

/* after the instruction */
Numeric form engineering

123.45  * 1e11    ->    12.345E+12