System Class FLOAT
浮動小数は、s*f*b^{e-p}
のフォームで表される 数学的な有理数(Common Lispのrational
ではなく)です。 ただし、s
は符号であり+1
か-1
、 b
は基数であり1
より大きい整数、 p
は浮動小数の精度(基数-b
の数値)であり正の整数、 f
は仮数でありb^{p-1}
からb^{p}-1
(含む)の間の正の整数、 e
は指数であり整数です。 p
の値とe
の区間は、 実装自身と実装内における浮動小数の型に依存します。 加えて、浮動小数のゼロもまた実装依存であり 「マイナスゼロ」が存在できます。 もしマイナスゼロが存在しないときは、 0.0
と-0.0
は両方とも単純に浮動小数のゼロとして解釈されます。 (= 0.0 -0.0)
は常にtrueです。 もしマイナスゼロが存在するとき、 (eql -0.0 0.0)
はfalseであり、 そうではないときはtrueです。
型short-float
, single-float
, double-float
, long-float
は、 型float
のサブタイプです。 これらのうちどの2つも疎の型か同じ型のどちらかです。 もし同じ型のとき、 上記の順番の中でそれらの間にある他の型もまた同じ型です。 例えば、もし型single-float
と型long-float
が同じ型のとき、 型double-float
もまた同じ型でなければなりません。
省略可能
float
[
lower-limit [
upper-limit ]
]
lower-limit, upper-limit - 型float
の区間指定子。 lower-limitとupper-limitの それぞれのデフォルト値はシンボル*
。
これは、浮動小数の区間を lower-limitとupper-limitによって定義することを示します。
figure_2-9
, 2.3.2. トークンから数の構築, 22.1.3.1.3. 浮動小数の印字
全ての数学的な整数は、 Common Lispの実数real
で表現できるだけでなく、 浮動小数の複素数complex float
でもまた表現できます。 例えば、数学的な数の1
の表現として可能なものは、 整数の1
、浮動小数の1.0
、複素数の#C(1.0 0.0)
が含まれます。