リテラルは、処理のために FormCalc に渡されるすべての値の基となる定数値です。リテラルの 2 つの一般的な型は数値と文字列です。
数値リテラル数値リテラルは、整数、小数点、小数部、指数(「e」または「E」)およびオプションの符号付き指数値のうち 1 つまたは複数から成る、数字中心のシーケンスです。以下はすべてリテラル数の例です。
-12
1.5362
0.875
5.56e-2
1.234E10
リテラル数では、整数部または小数部のいずれかを省略できますが、両方を省略することはできません。また、小数部内では、小数点または指数値のいずれかを省略できますが、両方を省略することはできません。
数値リテラルはすべて、内部的に Institute of Electrical and Electronics Engineers(IEEE)の 64 ビットバイナリ値に変換されます。ただし、IEEE 値では有限数しか表現できないので、一部の値は 2 進小数としての表現を持ちません。これは、1/3 などの値を小数として正確に表現できないことに似ています(10 進値で完全に正確に表現するには、無限の小数桁数が必要です)。
このような、相当する 2 進小数を持たない値のセットにあたるのは、一般的に、指数の前に 16 を超える有効数字を持つ数値リテラルです。FormCalc は、IEEE 標準に従って、これらの値を表現可能な最も近い IEEE 64 ビット値に四捨五入します。例えば、次の値
123456789.012345678
は、(最も近い)次の値に四捨五入されます。
123456789.01234567
一方、次の数値リテラル
99999999999999999
は、(最も近い)次の値に四捨五入されます。
100000000000000000
この動作は、予期しない結果になることがあります。FormCalc には、小数点以下を指定桁数に四捨五入した特定の数値を返す関数 Round があります。渡された数値が 2 つの表現可能な数値のちょうど中間値である場合は、ゼロと逆方向に数値を四捨五入します。つまり、数値が正の値の場合には数値は切り上げられ、負の値の場合には数値は切り捨てられます。したがって、次の例で、
Round(0.124, 2)
は、0.12 を返します。
また、
Round(.125, 2)
は、0.13 を返します。
このように変換されることから考えると、
Round(0.045, 2)
は、0.05 を返します。
IEEE 754 標準では、数値リテラル 0.045 の近似値は 0.0449999999999999 であることが指示されています。この近似値は 0.05 よりも 0.04 に近い値です。したがって、
Round(0.045, 2)
は、0.04 を返します。
これは、IEEE 754 標準にも合致します。
IEEE の 64 ビット値は、NaN(Not a Number)、+Inf(正の無限値)および -Inf(負の無限値)などの表現をサポートしています。FormCalc はこれらをサポートしていないので、NaN、+Inf または -Inf のいずれかに評価される式はエラー例外となり、式の残りの部分に渡されます。
文字列リテラル文字列リテラルは、2 つの引用符で囲まれた、Unicode 文字のシーケンスです。次に例を示します。
"The cat jumped over the fence."
"Number 15, Main street, California, U.S.A"
文字列リテラル "" は、空文字列と呼ばれる、テキスト文字の空のシーケンスを定義します。
リテラル文字列内に引用符(")文字を埋め込むには、2 つの引用符を挿入する必要があります。次に例を示します。
"The message reads: ""Warning: Insufficient Memory"""
すべての Unicode 文字には、¥u の後に 4 桁の 16 進数が付加された、6 文字の対応するエスケープシーケンスがあります。リテラル文字列内では、対応する Unicode エスケープシーケンスを使用して、制御文字などのすべての文字を表すことができます。次に例を示します。
"\u0047\u006f\u0066\u0069\u0073\u0068\u0021"
"\u000d" (carriage return)
"\u000a" (newline character)
|
|
|