Next: , Previous: , Up: Numbers   [Contents][Index]


3.2 Floating-Point Basics

浮動小数点数は整数ではない数を表現するのに便利です。浮動小数点数の範囲は、使用しているマシンでのCデータ型のdoubleと同じ範囲です。現在Emacsでサポートされているすべてのコンピューターでは、これは倍精度のIEEE浮動小数点数です。

浮動小数点数にたいする入力構文は、小数点と指数のどちらか1つ、または両方が必要とします。オプションの符号(‘+’か‘-’)は、その数字と指数の前に記述します。たとえば、‘1500.0’、‘+15e2’、‘15.0e+2’、‘+1500000e-3’、‘.15e4’は、値が1500の浮動小数点数を記述する5つの方法です。これらはすべて等価です。Common Lispと同様、Emacs Lispは、浮動小数点数の小数点の後に、少なくとも1つの数字を必要とします。‘1500.’は整数であり、浮動小数点数ではありません。

Emacs Lispは-0.0を、equal=に関して、通常の0と数学的に同じものとして扱います。これは、(他の処理がこれらを区別するとしても、-0.00.0は数学的に等しいとする)IEEE浮動小数点数規格にしたがっています。

IEEE浮動小数点数規格は、浮動小数点数として、正の無限大と、負の無限大をサポートします。この規格はNaNまたは“not-a-number(数字ではない)”と呼ばれる値クラスも提供します。数学関数は、正しい答えが存在しないような場合に、このような値をreturnします。たとえば(/ 0.0 0.0)はNaNをreturnします。NaN値に符号がついていたとしても、実用的な目的にたいして、Emacs Lispにおける異なるNaN値に、意味のある違いはありません。

以下は、これらの特別な浮動小数点数にたいする入力構文です:

infinity

1.0e+INF’と‘-1.0e+INF

not-a-number

0.0e+NaN’と‘-0.0e+NaN

以下の関数は浮動小数点数を扱うために特化したものです:

Function: isnan x

この述語は浮動小数引数がNaNのときはt、それ以外はnilをreturnします。

Function: frexp x

この関数はコンスセル(s . e)をreturnします。ここでseは、浮動小数点数のsignificand(浮動小数点数を2の指数表現したときの仮引数)と指数です。

xが有限の場合、sは0.5以上1.0未満の浮動小数点数で、eは整数で、 x = s * 2**eです。 xが0または無限の場合、sxと等しくなります。xがNaNの場合は、sもNaNです。xが0の場合、eは0です。

Function: ldexp sig &optional exp

この関数は、significandがsig、指数がexpの浮動小数点数をreturnします。

Function: copysign x1 x2

koの関数はx2の、x1の値にコピーして、その結果をreturnします。x1x2は浮動小数でなければなりません。

Function: logb x

この関数はxの2進指数をreturnします。より正確にいうと、この値は|x|の2を底とする対数を、整数に切り下げたものです。

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