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 ページを参照してください)。
.-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