section1
Python Programming: An Introduction to Computer Science
- 作者: John M. Zelle
- 出版社/メーカー: Franklin Beedle & Assoc
- 発売日: 2003/12
- メディア: ペーパーバック
- 購入: 1人 クリック: 4回
- この商品を含むブログ (5件) を見る
3.1 Numeric Data Types
数値計算を行うプログラムについて詳しく見てゆく。
プログラムによって保存、操作される情報のことを一般的にデータと呼ぶ。異なる種類のデータは、保存される方法も操作される方法も異なる。
change.pyの作成
整数(whole number)と少数成分を持つ数とは、コンピュータの中で異なる方法で表現されている。詳しく言えば、これら2つは異なるデータ型(data type)を持つという。
データ型はその対象がどんな値を持つことが可能か、またどんな演算を施すことが可能かを決定する。整数は整数型(integer data type, or int for short)で表現される。整数型の値は整数である。小数部分を持つ数は浮動小数(floating point, or float)値で表現される。
プログラマはコンピュータに数が整数型か浮動小数かを伝えなければならない。小数点を含まない数リテラルは整数値を生み出し、小数点を含む数リテラルは浮動小数で表現される。(小数部分が0であっても良い。)
pythonはtypeと呼ばれる関数を提供している。この関数はどんな値であっても、そのデータ型を教えてくれる。
なぜ数に2つの異なるデータ型があるのかという疑問がある。1つはプログラムの形式に関係する。整数型を用いれば、プログラムの読み手にはその数が少数になることはないと伝わる。2つ目の理由は、様々な演算の効率性の問題である。整数型に対する計算アルゴリズムは、浮動小数に対するそれよりも単純で、したがって速い。
浮動小数型は実数に対する近似でしか無いことに注意する。(実数を正確に表現するためには無限の正確性が必要だが、コンピュータは有限しか使えない。)したがって、浮動小数値を用いる必然性がなければ、整数型を使うべきである。
上で述べたように、値のデータ型はどんな演算が行えるのかを決定する。pythonは数に対する通常の数学的演算を備えている。ただ、厳密に言えば、整数型の足し算と浮動小数点型の足し算はことなる演算であることに注意する。(他の演算についても同様。データ型にはその型固有の演算を考える。)
この点が特に問題となるのは、割り算である。整数の割り算については、結果は(小数部分を無視されて)常に整数となる。これは要するに割り算の「商」を求めていることになる。
四則演算ではないが、割り算の余りを与える演算(%)も存在する。(例えば10 % 3 = 1といった具合。)
整数型についての割り算(/)と余り(%)には関係がある。実際、整数の除法は次の数学的定理が全て表している:2つの整数a, b (bは0でない)に対して、a = bq + rを満たす整数q, rが一意的に存在する。ただしrは0以上|b|未満とする。
これを上のpythonの演算を用いれば、a = (b) (a/b) + (a%b)と書ける。