Next: , Previous: Integer Basics, Up: Numbers


3.2 浮動小数点数の基本

浮動小数点数は、整数ではない数を表現するのに便利です。 浮動小数点数の正確な範囲は計算機に依存します。 使用している計算機のC言語のデータ型doubleの範囲と同じです。

浮動小数点数の入力構文は、小数点(に続けて1桁以上の小数部)または指数、 あるいは、その両方が必要です。 たとえば、‘1500.0’、‘15e2’、‘15.0e2’、 ‘1.5e3’、‘.15e4’は、同じ1500という値の 浮動小数点数を書き表す5つの方法です。 どれも、まったく等価です。 負の浮動小数点数を書くには、‘-1.0’のようにマイナス符号を使います。

現代の計算機はIEEEの浮動小数点数規格に基づいています。 この規格では、浮動小数点数の値には正の無限大と負の無限大があります。 また、NaNすなわち『非数値』(not-a-number)と呼ばれる値の種類もあります。 算術関数は、正しい答えがないときには、このような値を返します。 たとえば、(sqrt -1.0)はNaNを返します。 実用的には、Emacs Lispでは異なるNaNの値に重要な違いはなく、 特定の場面で正確にはどのNaNの値を使うかの規則もないので、 Emacs Lispではそれらを区別しようとはしません。 浮動小数点数の入力構文はつぎのとおりです。

正の無限大
1.0e+INF
負の無限大
-1.0e+INF
非数値
0.0e+NaN’。

さらに、IEEEの浮動小数点数では値-0.0を普通のゼロと区別します (しかし、equal=は、これらを等しい値と扱う)。

浮動小数点数の2進指数を取り出すには(あるいは、整数の対数を予測するには)、 logbを使います。

— Function: logb number

この関数はnumberの2進指数を返す。 より正確には、その値はnumberの2を底とする対数を整数に切り下げたもの。

          (logb 10)
               ⇒ 3
          (logb 10.0e20)
               ⇒ 69