【入門】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
このサイト様の最大値がぼくのよりはるかに大きいのが気になる......)