数の型

Wolframシステムには,4つの数の型が組み込まれている.

Integer任意の桁数の整数
Rationalinteger/integer の約分された分数
Real指定された桁精度で近似された実数
Complexnumber+number Iの形の複素数

Wolframシステム内部での数の型

有理数は,常に約分された整数の比として表される.
In[1]:=
Click for copyable input
Out[1]=
小数点を用いると,整数や有理数ではなく,実数の近似値として扱われる.
In[2]:=
Click for copyable input
Out[2]=
近似値としての実数の桁数は何であってもよい.
In[3]:=
Click for copyable input
Out[3]=
複素数は整数や有理数の成分で構成してもよい.
In[4]:=
Click for copyable input
Out[4]=
実数を成分としてもよい.
In[5]:=
Click for copyable input
Out[5]=
123整数
123.実数の近似値
123.0000000000000指定された桁精度を持つ近似値
123.+0.I実数の近似値を成分とする複素数(実部と虚部が近似値)

型の違いによる値123の意味の相違

Wolframシステムでは,頭部(ヘッド)を調べることによって数の型の区別を確認することができる.(他の表記物と同様に数も頭部を持つが,数の頭部は型以外の情報を持たない.)

は,頭部Integerを持つ厳密な整数である.
In[6]:=
Click for copyable input
Out[6]=
今度は小数点を指定し,値を実数として入力する.型を確認すると頭部Realを持つ実数型が返される.
In[7]:=
Click for copyable input
Out[7]=
NumberQ[x]x が数かどうか判定する
IntegerQ[x]x が整数かどうか判定する
EvenQ[x]x が偶数かどうか判定する
OddQ[x]x が奇数かどうか判定する
PrimeQ[x]x が素数かどうか判定する
Head[x]===type数の型を判定する

数の型の判定関数

NumberQ[x]は,どんな型の数に対しても判定を行う.
In[8]:=
Click for copyable input
Out[8]=
は実数(Real)の近似値として扱われるのでIntegerQFalseを返す.
In[9]:=
Click for copyable input
Out[9]=

複素数をよく使う場合,虚数部の表記によっては微妙な違いが生じるので気を付ける必要がある.入力値は実数として扱われ,その虚数部分は厳密なゼロとされる.しかし,虚数部がある精度のもとで近似値としてゼロとなっているような複素数を扱いたいという場合もあるだろう.

虚数部分を厳密な整数とすると,複素数は実数に簡約される.
In[10]:=
Click for copyable input
Out[10]=
ここで,虚数部は特定の精度までのゼロなので,複素数のまま保持される.
In[11]:=
Click for copyable input
Out[11]=

複素数の虚数部が厳密なゼロか有限精度のゼロかどうかを区別することは理屈っぽいだけで実用的な意味がないように思われる.しかし,区別することは重要で,「一意的な値を持たない関数」で説明するが,複素数を使ったベキと根の解釈でこの違いは大きな意味を持つ.

数の型を調べるにはHead[expr]を使えば,Wolframシステムが保持する数の頭部が参照できる.しかし,多くの場合はIntegerQのような関数で特定の型かどうかを調べる方が手っ取り早い.これらの判定関数は引数が調べる型に属するときTrueを返し,そうでなければFalseを返す.例えば,判定する前に整数の型をに割り当てておかなければ,IntegerQ[x]Falseを返してくる.