【Python】数値型の種類(int、float、bool、complex)

Pythonにおける数値型の種類と使う方法について入門者向けにまとめました。

【int】整数型

Pythonでは、整数型(int)の数値を次のように定義します。

num = 55        # 整数(10進数)

(変数に整数を代入するだけで自動的に整数型となります)
数値の前に0o, 0x, 0bをつけると8進数、16進数、2進数で定義することができます。

num = 0o55        #  8進数
num = 0xfbed       # 16進数
num = 0b11010100   #  2進数
詳細
【Python】整数型(int)の数値定義

【float】浮動小数点数型

浮動小数点数型(float)とは、コンピュータが数値を扱うときの表現手法の1つで、小数点を扱うことが出来ます。(整数型intでは出来ない)
Pythonでは、浮動小数点数型の数値を次のように定義します。

num = 1.2     # 浮動小数点数
num = 1.2e3     # 浮動小数点数(指数表記) 1.2 × 10^3
num = 1.2E-3    # 浮動小数点数(指数表記) 1.2 × 10^-3
詳細
【Python】浮動小数点数型(float)の数値定義

【bool】論理値型

論理値型((bool)は、TrueまたはFalseで表します。(先頭文字だけ大文字であることに注意)
Pythonでは、論理値(bool)を次のように定義します。

bool = True
bool = False

Python では、False、数値の0、0.0、空文字(“”)、空リスト([])、空タプル(())、空辞書({})などを偽とします。
そして、それら以外は真となります。

詳細
【Python】論理値型((bool)の数値定義

【complex】複素数型

Pythonでは、複素数の計算を扱える複素数型(complex型)があります。

ej = 2 + 3j

print(ej) # (2+3j)
print(type(ej)) # 
複素数型のポイント
1 虚数部はiでなくj
2 jは実部の後に記述
3 虚数部の係数が1の場合は「1j」と記述
4 虚部部が0の場合は「0j」と記述

次のようにcomplex(実部, 虚部)で複素数型を生成することもできます。
変数で係数を指定するときに便利です。

real = 2
imag = 3

c = complex(real, imag)

print(ej) # (2+3j)
print(type(ej)) # 
詳細
■【Python入門】複素数型(complex型)の使い方

【変換】10進数 → 2進数、16進数

数値を2進数、16進数表記の文字列に変換するには、bin関数、hex関数を用います。

value = 10

# 10進数 → 2進数
bin_value = bin(value)

# 10進数 → 16進数
hex_value = hex(value)

print(bin_value) # 0b1010
print(hex_value) # 0xa

2進数、16進数 → 10進数

文字列に変換された2進数、16進数は、eval関数で10進数に変換できます。

value = 10

# 10進数 → 2進数
bin_value = bin(value)

# 10進数 → 16進数
hex_value = hex(value)

# 2進数 → 10進数
dec_value1 = eval(str(bin_value))
print(dec_value1) # 10

# 16進数 → 10進数
dec_value2 = eval(str(hex_value))
print(dec_value2) # 10
詳細
【Python】2進数、10進数、16進数の相互変換
参考文献・関連記事
関連 【Python入門】サンプル集

コメント

  1. 匿名 より:

    コメントが間違えているような…

  2. 匿名 より:

    # 2進数 → 16進数
    dec_value2 = eval(str(hex_value))
    print(dec_value2) # 10

    上記のコメントに違和感を感じました
    ご確認ください

    • 管理人 より:

      匿名様

      コメントありがとうございます。
      ご指摘のとおり正しくは「16進数 → 10進数」でした。
      修正致します。

  3. 匿名 より:

    疑問があります。

    dec_value1 = eval(str(bin_value))
    dec_value2 = eval(str(hex_value))
             ↓
    dec_value1 = eval(bin_value) ← str関数が要らない
    dec_value2 = eval(hex_value) ← str関数が要らない
    これでも動きますよ。
    bin,hex関数で文字列に変換されているので再度文字列に変換する必要はないのでは?
    >>> print(type(bin_value))

    >>> print(type(hex_value))

  4. 匿名 より:

    str関数は必要ですか?なくても動きますよ。

    >>> print(type(bin_value))

    >>> print(type(hex_value))