情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Pythonで数値を扱う

2019/10/22

数値の種類

Pythonの数値は主に2種類あります。

  • 整数・・・無限の精度を有します。int型(整数型)となります。
  • 浮動小数点数・・・通常は倍精度です。float型(浮動小数点数型)となります。

Pythonのその他の数値には下のようなものがあります。

  • 複素数・・・実部と虚部からなり、それぞれは浮動小数点数です。complex型(複素数型)となります。
  • 有理数
  • 10進小数

Pythonの複素数に関しては下の記事を参照してください。

数値の表現

Pythonで整数や浮動小数点数を表現するには私達が普段数値を表現するのに使っているのと同じ表現方法を使用することができます。

例:

>>> 2
2
>>> -351
-351
>>> 4.183
4.183

小数点を含まない数値の表現はint型(整数型)となり、小数点を含む数値の表現はfloat型(浮動小数点数型)となります。

例:

>>> type(2)
<class 'int'>
>>> type(-351)
<class 'int'>
>>> type(4.183)
<class 'float'>

なお、数値の桁の間には_を挟むことができます。

例:

>>> 1_2_3
123
>>> 12_3
123
>>> 0.12_34
0.1234
>>> 0.1_2_3_4
0.1234
>>> 3_56.44
356.44

整数の表現

整数は2進数や8進数や16進数として表現することもできます。

2進数の整数の先頭には0bまたは0Bを付加し、8進数の整数の先頭には0oまたは0Oを付加し、16進数の整数の先頭には0xまたは0Xを付加します。

例:

>>> 0b11111110
254
>>> 0o376
254
>>> 0xfe
254
>>> 0b_1111
15
>>> 0b1_1_11
15

浮動小数点数の表現

浮動小数点数は指数表現を使用することもできます。

例:

>>> 1.2345e-7
1.2345e-07
>>> 1.2345E-7
1.2345e-07
>>> 1.2345e+7
12345000.0
>>> 1.2345E+7
12345000.0

浮動小数点数の整数部や小数部が0である場合にはその0を省略することができます。

例:

>>> 1.
1.0
>>> .6683
0.6683
>>> .12345e-6
1.2345e-07
>>> 12345.e-11
1.2345e-07

数値の計算

Pythonでは数値を使って様々な計算をすることができます。

主に下のような種類の計算をすることができます。

  • 足し算(加算)・・・足し算は+演算子を使って1 + 2のように行います。
  • 引き算(減算)・・・引き算は-演算子を使って55 - 7.9のように行います。
  • 掛け算(乗算)・・・掛け算は*演算子を使って4 * -9のように行います。
  • 割り算(除算)・・・割り算は/演算子を使って6 / 1.5のように行います。
  • 剰余・・・剰余の計算は%演算子を使って17 % 3のように行います。
  • 冪乗(累乗)・・・冪乗の計算は**演算子を使って2 ** 5のように行うか、pow関数を使ってpow(2, 5)のように行います。
  • 冪剰余(冪乗剰余)・・・冪剰余の計算はpow関数を使ってpow(2, 5, 3)のように行います。
  • 絶対値・・・絶対値はabs関数を使ってabs(-4.3)のようにして得られます。

例:

>>> 1 + 2
3
>>> 55 - 7.9
47.1
>>> 4 * -9
-36
>>> 6 / 1.5
4.0
>>> 17 % 3
2
>>> 2 ** 5
32
>>> pow(2, 5)
32
>>> pow(2, 5, 3)
2
>>> abs(-4.3)
4.3

ちなみに、int型の数値同士の足し算、引き算、掛け算、剰余の結果は必ずint型となり、float型の数値を含む足し算、引き算、掛け算、剰余の結果は必ずfloat型となります。

例:

>>> 1 + 2
3
>>> 1.0 + 2
3.0
>>> 1 + 2.0
3.0
>>> 1.0 + 2.0
3.0
>>> 7 - 5
2
>>> 7.0 - 5
2.0
>>> 7 - 5.0
2.0
>>> 7.0 - 5.0
2.0
>>> 4 * -9
-36
>>> 4.0 * -9
-36.0
>>> 4 * -9.0
-36.0
>>> 4.0 * -9.0
-36.0
>>> 17 % 3
2
>>> 17.0 % 3
2.0
>>> 17 % 3.0
2.0
>>> 17.0 % 3.0
2.0

しかし、割り算の場合には割り切れるような場合であっても結果は必ずfloat型となります。int型で結果を得たい場合には/演算子の代わりに//演算子を使用します。//演算子を使用した場合には割り切れない割り算の結果は必ず切り捨てが行われます。

例:

>>> 8 / 2
4.0
>>> 8 // 2
4
>>> 9 / 2
4.5
>>> 9 // 2
4

また、int型の数値同士の冪乗の結果は指数が負数でない限り必ずint型となり、float型の数値を含む冪乗の結果は必ずfloat型となります。

例:

>>> 2 ** 10
1024
>>> 2.0 ** 10
1024.0
>>> 2 ** 10.0
1024.0
>>> 2.0 ** 10.0
1024.0
>>> 2 ** -2
0.25

また、冪剰余においては全ての数値がint型でなければなりません。float型の数値が含まれる場合にはTypeErrorエラーが発生します。

例:

>>> pow(2.0, 5, 3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pow() 3rd argument not allowed unless all arguments are integers
>>> pow(2, 5.0, 3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pow() 3rd argument not allowed unless all arguments are integers
>>> pow(2, 5, 3.0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pow() 3rd argument not allowed unless all arguments are integers

なお、割り算と剰余の計算を一度に行うにはdivmod関数を使用します。

例:

>>> q, r = divmod(9, 2)
>>> q
4
>>> r
1

ZeroDivisionErrorエラー

ある数値を0で割ろうとした(ゼロ除算)場合にはZeroDivisionErrorエラーが発生します。

例:

>>> 1 / 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
>>> 1 // 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
>>> 1 % 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero

ただし、pow関数の場合にはValueErrorエラーが発生します。

例:

>>> pow(2, 5, 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: pow() 3rd argument cannot be 0

数値の比較

Pythonでは2つの数値を比較することができます。

主に下のような種類の比較を行うことができます。

  • ~より小さい・・・<演算子を使って3 < 8のように行います。
  • ~より大きい・・・>演算子を使って1 > 1.1のように行います。
  • ~以下・・・<=演算子を使って9.9 <= 123のように行います。
  • ~以上・・・>=演算子を使って7 >= 6.7のように行います。
  • ~と等しい・・・==演算子を使って3 == 3のように行います。
  • ~と等しくない・・・!=演算子を使って5 != 7のように行います。

例:

>>> 3 < 8
True
>>> 1 > 1.1
False
>>> 9.9 <= 123
True
>>> 7 >= 6.7
True
>>> 3 == 3
True
>>> 5 != 7
True

ビット演算

Pythonでは整数に対してビット演算を行うことができます。

下のような種類のビット演算を行うことができます。

  • 論理和・・・|演算子を使って1 | 7のように行います。
  • 排他的論理和・・・^演算子を使って2 ^ 3のように行います。
  • 論理積・・・&演算子を使って1 & 5のように行います。
  • 左シフト・・・<<演算子を使って55 << 2のように行います。
  • 右シフト・・・>>演算子を使って6 >> 5のように行います。
  • 否定・・・~演算子を使って~1のように行います。

例:

>>> 1 | 7
7
>>> 2 ^ 3
1
>>> 1 & 5
1
>>> 55 << 2
220
>>> 6 >> 5
0
>>> ~1
-2
pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-python