Easy Coding

ノートみたいなもの。

【入門】pythonで数値を扱う【int, long, float, complex】

pythonで計算を行います

型は自動になっているよう

まずはint型

#! /usr/bin/python
#pythonで計算する

#int型
num1 = 1
num2 = 2
print(num1)
print(num2)

実行結果

1
2

int型だ。範囲は2^31-1や2^63-1など、システムごとに変化するらしい

ぼくの環境(Python 3.4.3)でのintのmaxValueを求めてみておく

import sys
intMaxValue = sys.maxint
print(intMaxValue)

ところがエラー

AttributeError: 'module' object has no attribute 'maxint'

ググったところ、pythonのバージョン3系ではint型がlong型と統合しており、最大値がいくらでも増加し続けられるらしい

(javaやCしか使ったことのないぼくとしては”すごい! 感動した!”という感じだぜ......)

ただ、無限と判定したいときや、経路探索で評価最低などが欲しい時に”とにかく大きい数値”というのは需要がある

そのためにmaxsize定数というのが存在しているらしい

#intの大きな数値
import sys
intMaxValue = sys.maxsize
print(intMaxValue)

さぁ、結果は

2147483647

おお、見慣れた21億......

intMaxOver1 = 2147483647 + 1
intMaxOver2 = 2147483647 * 10000000
print(intMaxOver1)
print(intMaxOver2)

実行結果

2147483648
21474836470000000

しかも、確かに最大値を大きく超えても問題がないようだ、すごい

(ぼくがキャリを用意するのが面倒でjavaで実装できなかったライフゲームのビットボードを、pythonなら実装できそうだ。それに付随して、次は二進数や論理演算の記事を書きたい)



さて、次はfloat型

#float型
num1 = 3.14
num2 = 3.14e5 # 3.14*10^5
print(num1)
print(num2)

実行結果

3.14
314000.0

小数点を打てば浮動小数点(float)型になり、「eN」を使って10のN乗を表現

うん、もんだいない



それに加えて、complex型というのを不勉強なぼくは初めて知った

虚数を扱えるとのこと。制御などで多分に出番がありそう

#complex型
num1 = 3.14j
num2 = 3.14j * 3.14j
print(num1)
print(num2)
3.14j
(-9.8596+0j)

二乗で負の数になっている

しかも、表記がちゃんと複素表記で「0j」を残すなんて、有能そうな感じだ



満足した

かなり使い勝手が良さそう



(参考サイト:
Python : 整数最大値、辞書項目数の最大値: enajet
このサイト様の最大値がぼくのよりはるかに大きいのが気になる......)