数値

数値 の Python

78個の演習

数値について

Pythonには、組み込みの数値型が3つあります。整数(int)、浮動小数点数(float)、複素数(complex)です。 分数(fractions.Fraction)と10進数(decimal.Decimal)も、標準ライブラリからインポートして使うことができます。

16進数(hex())、8進数(oct())、2進数(bin())を含め、小数点以下がない整数もintsと判定されます:

# Ints are whole numbers.
>>> 1234
1234
>>> type(1234)
<class 'int'>

>>> -12
-12

小数点を含む数値は、小数部分があってもなくても、floatsと判定されます:

>>> 3.45
3.45
>>> type(3.45)
<class 'float'>

算術演算

Pythonは、これらの異なる数値型の間の算術演算を完全にサポートしています。二項算術演算子(+、-、*、/、//、%)を使うと、より狭い型の数値は、より広い型に合わせて変換されます。

複素数を除くすべての数値は、すべての算術演算をサポートしており、演算子の優先順位に従って評価されます。 複素数に対する(+や-以外の)数学関数は、cmathモジュールで利用できます。

足し算と引き算

足し算と引き算の演算子は、通常の数学と同じように動作します。 オペランドの1つ以上がfloatの場合、残りのintもfloatに変換されます:

>>> 5 - 3
2
# The int is widened to a float here, and a float is returned.
>>> 3 + 4.0
7.0

掛け算

足し算や引き算と同じように、掛け算でも、より狭い型の数値はより広い方に合わせて変換されます:

>>> 3 * 2
6

>>> 3 * 2.0
6.0

割り算

割り算は、結果が整数になっても、常にfloatを返します:

>>> 6/5
1.2

>>> 6/2
3.0

切り捨て除算

intの結果が必要な場合は、切り捨て除算を使って結果を切り捨てられます。 切り捨て除算は//演算子で行います:

>>> 6//5
1

>>> 6//2
3

余り

余りを求める演算子(%)は、2つのオペランドを割った余りを返します:

# The result of % is zero here, because dividing 8 by 2 leaves no remainder
>>> 8 % 2
0

# The result of % is 2 here, because 3 only goes into 5 once, with 2 left over
>>> 5 % 3
2

5 % 3は、別の見方をすると次のようになります:

>>> whole_part = int(5/3)
1

>>> decimal_part = 5/3 - whole_part
0.6666666666666667

>>> whole_remainder = decimal_part * 3
2.0

べき乗

べき乗は**演算子で行います:

>>> 2 ** 3
8

>>> 4 ** 0.5
2

変換

数値は、組み込み関数のint()とfloat()を使って、intからfloatへ、floatからintへ変換できます:

>>> int(3.45)
3

>>> float(3)
3.0

丸め

Pythonには、浮動小数点数を指定した桁数に丸める組み込み関数round(<number>, <decimal_places>)があります。 桁数を指定しない場合は、最も近い整数に丸められ、intが返されます:

>>> round(3.1415926535, 2)
3.14

>>> round(3.1415926535)
3

優先順位と括弧

Pythonでは、括弧(())を使って式をまとめることができます。 これは、デフォルトの演算の順序を変えたいときに便利です。

>>> 2 + 3 * 4
14

>>> (2 + 3) * 4
20

Pythonでは、演算子の優先順位にPEMDASの規則が使われます。 つまり、()の中の計算が最も優先され、次に**、その次に*、/、//、%、+、-の順になります:

>>> 2 + 3 - 4 * 4
-11

>>> (2 + 3 - 4) * 4
4

# In the following example, the `**` operator has the highest priority, then `*`, then `+`
# Meaning we first do 4 ** 4, then 3 * 256, then 2 + 768
>>> 2 + 3 * 4 ** 4
770

精度と表現

Pythonの整数は任意精度です。桁数は、ホストシステムで利用可能なメモリによってのみ制限されます。

浮動小数点数は通常、Cのdouble(小数点以下15桁の精度)で実装されていますが、表現はホストシステムによって異なります。 複素数にはreal部とimaginary部があり、どちらも浮動小数点数で表されます。

プログラミング言語を問わず共通する浮動小数点演算の問題点や限界についてより詳しく知りたい場合は、0.30000000000000004.comとThe Python Tutorialを見てみてください。

GitHubで編集 リンクは新しいウィンドウまたはタブで開きます

数値を学習する

練習はロックされています

数値を練習するには、あと3個の演習のロックを解除してください