Mathematica 9 is now available

Documentation / Mathematica / Mathematicaブック / Mathematicaの仕組み / 式のテキスト形入出力  /

2.9.7 数値の出力書式

数値の特殊表記

出力にはデフォルトの書式が使われる.数値が大きければ科学表記が使われる.

In[1]:= {6.7^-4, 6.7^6, 6.7^8}

Out[1]=

すべての数値を科学表記で表示する.

In[2]:= ScientificForm[%]

Out[2]//ScientificForm=

今度は,工学表記で表示する.指数部が3の整数倍になるように仮数部が調整される.

In[3]:= EngineeringForm[%]

Out[3]//EngineeringForm=

会計表記では,負の数値は丸カッコでくくられる.科学表記は全く使われない.

In[4]:= AccountingForm[{5.6, -6.7, 10.^7}]

Out[4]//AccountingForm=

実数表示精度の指定

の実数値を30桁精度で表示する.

In[5]:= N[Pi^9, 30]

Out[5]=

今度は10桁分だけ表示する.

In[6]:= NumberForm[%, 10]

Out[6]//NumberForm=

12桁精度の工学表記で表示する.

In[7]:= EngineeringForm[%, 12]

Out[7]//EngineeringForm=

数値の表示仕様のオプション

最終の項目を除く,テーブルにあるすべてのオプションは,整数と近似実数の両方に適用される.

上記のオプションはNumberForm ScientificForm EngineeringFormAccountingFormの表記変換関数のどれにでも使える.実際に,表記法に応じて個別に表示仕様を変えることも可能である.表に記載したデフォルト値は NumberFormのものである.

桁の間隔(DigitBlock)3にして階乗の値を見やすくする.

In[8]:= NumberForm[30!, DigitBlock->3]

Out[8]//NumberForm=

区切り記号はなんでもよい.ここでは,スペース(空白)を使ってみる.

In[9]:= NumberForm[30!, DigitBlock->5, NumberSeparator->" "]

Out[9]//NumberForm=

正の値にはプラス(+)の符号を付け,小数点の位置にはピリオドの代りに垂直バー (|)を使ってみよう.

In[10]:= NumberForm[{4.5, -6.8}, NumberSigns->{"-", "+"},
NumberPoint->"|"]

Out[10]//NumberForm=

実数の表示では,科学表記を使うか使わないかがまず選択される.使うのであれば続いて,小数点以下何桁まで表示するかが決定される. Mathematica内部では次の手順で表示様式が決定される.まず,数値を科学表記で記述してみて,そのとき,どのような指数部が生じるかを見る.次に,小数点の左側に桁1つ分のスペースを挿入する.さらに,指数部に ExponentFunctionで指定されている変換関数を適用し,実際に表示する形に変換する.このとき,科学表記が使われていなければ,指数部は Null(空)とみなされる.

実数がどう表示されるか見てみよう.特に指定していない場合,指数部が から 5の範囲以外にある場合は科学表記が使われることになっている.

In[11]:= {8.^5, 11.^7, 13.^9}

Out[11]=

指数部が10以上の値のときだけ科学表記を採用する記述.

In[12]:= NumberForm[%,
ExponentFunction -> (If[-10 < # < 10, Null, #]&)]

Out[12]//NumberForm=

指数部を3の整数倍になるように調整する.

In[13]:= NumberForm[%, ExponentFunction -> (3 Quotient[#, 3]&)]

Out[13]//NumberForm=

表示したい数の仮数部と指数部を決定したなら,残る最後のステップは,両方の部分を組み合せ最終的に表示する単一オブジェクトを生成することである.ここで,数値の表示書式を任意な形に変えたいときは,オプション NumberFormatを使い書式処理に必要な関数を指定しておく.その関数には,実行時の引数として仮数部,底,指数部の数値の3つの要素が入力されることになっている.指数部を取らない場合は ""としておく.

Fortran的な「e」形式で指数部をカスタム表示する.

In[14]:= NumberForm[{5.6^10, 7.8^20},
NumberFormat -> (SequenceForm[#1, "e", #3]&) ]

Out[14]//NumberForm=

FortranFormを作用させ正式なFortran形式で数値を表示することも可能である.

In[15]:= FortranForm[7.8^20]

Out[15]//FortranForm= 6.948515870862152e17

数値表示における表示桁位置の指定

複数の数値を縦1列に表示,もしくは,表形式で表示するとき,個々の数値の桁位置を合わせておくと見やすくなってよい.例えば,表示したい領域において,各数値の位が同じ位置にくるように設定する.

位の位置合せのため,数値の直前と直後に「空白文字(パッド)」を適当に挿入して表示長を調整できるようになっている.通常は,小数点以下の桁が足りなければ,数値の直後(右端)にゼロが付け足される.また,小数点以上の桁の場合は,数値の手前(左端)にスペースがあてがわれる.

表示長をそろえてみよう.スペースがあてがわれ,7桁分の表示長が確保される.

In[16]:= PaddedForm[{456, 12345, 12}, 7]

Out[16]//PaddedForm=

整数のリストを1列に並べて表示してみる.

In[17]:= PaddedForm[ColumnForm[{456, 12345, 12}], 7]

Out[17]//PaddedForm=

全表示桁数を7桁とし,その内4桁分を小数点以下の表示に回す.

In[18]:= PaddedForm[{-6.7, 6.888, 6.99999}, {7, 4}]

Out[18]//PaddedForm=

NumberFormで同じ指定をする.NumberFormでは表示桁長が足りなくてもスペースの充填は行われない.

In[19]:= NumberForm[{-6.7, 6.888, 6.99999}, {7, 4}]

Out[19]//NumberForm=

SignPadding->Trueとすると符号の後にスペースが挿入されるようになる.

In[20]:= PaddedForm[{-6.7, 6.888, 6.99999}, {7, 4},
SignPadding->True]

Out[20]//PaddedForm=

科学表記が使われるときは,仮数部だけに桁長の調整が施される.

In[21]:= PaddedForm[
ColumnForm[{6.7 10^8, 48.7, -2.3 10^-16}], {4, 2}]

Out[21]//PaddedForm=

NumberPaddingのデフォルト設定で関数 NumberForm PaddedFormを使った場合,数値の右側にパッドを入れようとすればゼロが充填される.ここで,左右に充填するものとしてスペースを使いたい場合は, NumberPadding -> {" ", " "}と指定する.

数値の右にゼロの代りにスペースをあてがうよう指定する.

In[22]:= PaddedForm[{-6.7, 6.888, 6.99999}, {7, 4},
NumberPadding -> {" ", " "}]

Out[22]//PaddedForm=

数値表示における底の変換

入力値を2進法で表示する.

In[23]:= BaseForm[2342424, 2]

Out[23]//BaseForm=

16進法で表示する.10進法以上の場合は,9より大きい数はアルファベットが使われる.

In[24]:= BaseForm[242345341, 16]

Out[24]//BaseForm=

実数にも BaseFormは使える.

In[25]:= BaseForm[2.3, 2]

Out[25]//BaseForm=

科学表記の実数にも使える.

In[26]:= BaseForm[2.3 10^8, 2]

Out[26]//BaseForm=

任意の底における数値の入力法と,数値の各位の数字をリストアップする方法は 3.1.3で説明する.必要ならばそちらを参照のこと.



Any questions about topics on this page? Click here to get an individual response.Buy NowMore Information
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.