Pythonの数値型データについて解説したいと思います。
Pythonでは明示的にデータ型を指定しなくても問題ないですが、
きちんと特性を理解することが重要なので本記事を参考にしてみてください。
目次
整数・長整数の扱い方とint型変換
python3の整数・長整数は全てint型です。メモリが許す限り最大値、最小値の制限はありません。
以下が整数の加算です。
1 + 1
# 2
なお、int型を使える最大値、最小値のメモリ数はsys.maxsizeで取得可能です。
以下がサンプルになります。
import sys
print(sys.maxsize)
# 9223372036854775807
これは64-bitパソコンの最大の取りえる値は出力結果です。
32-bit、64-bitで最大の取りえる値は異なるので注意してください。
通常、32 ビットプラットフォームでは 231 – 1、64 ビットプラットフォームでは 263 – 1 になります。
参考:sys.maxsize
int型への変換にはintメソッド利用します。
以下がサンプルになります。
a='110'
print(type(a))
# <class 'str'>
b=int(a)
print(b)
# 110
print(type(b))
# <class 'int'>
参考:組み込み関数
浮動小数の扱い方とfloat型への変換
Pythonでは浮動小数点float型に格納されますが明示的に型を指定する必要はありません。
以下がサンプルになります。
floatnum=1.4
print(floatnum)
# 1.4
print(type(floatnum))
# <class 'float'>
int型またはString型からfloat型への変換にはfloat関数を利用します。
サンプルは以下になります。
strfloat='1.4'
#Str型 --> float型
strtofloat=float(strfloat)
print(strtofloat)
# 1.4
#int型 --> float型
intfloat=1
inttofloat=float(intfloat)
print(inttofloat)
# 1.0
#Str型 --> float型タイプ判別
print(type(strfloat))
# <class 'str'>
print(type(strtofloat))
# <class 'float'>
#int型 --> float型タイプ判別
print(type(intfloat))
# <class 'int'>
print(type(inttofloat))
# <class 'float'>
参考:組み込み関数float
Pythonにも浮動小数点誤差は存在します。formatメソッドを利用して確認してみます。
print(1.4)
# 1.4
print(format(1.4,'.30f'))
# 1.399999999999999911182158029987
参考:組み込み関数float
複素数
Pythonでは複素数を表現することは容易にできます。
複素数はcomplex型として実装されており、虚数単位はjで表現します。
以下がサンプルになります。
complexnum1 = 1 + 2j
print(complexnum1)
# (1+2j)
print(type(complexnum1))
# <class 'complex'>
jが1の場合でも1jと入力しなければいけない点に注意してください。
complexnum1 = 1 + j
print(complexnum1)
print(type(complexnum1))
エラー:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-12-ea3bd07a68e1> in <module>
----> 1 complexnum1 = 1 + j
2
3 print(complexnum1)
4 print(type(complexnum1))
NameError: name 'j' is not defined