数と式 - (2025/02/16 (日) 19:24:29) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
** 目次
#contents
** 数値を表す文字列を数値に変換する
整数に変換する場合はint関数を、浮動小数点数(小数点以下の数値を含む数)に変換する場合はfloat関数を使う。
#highlight(){{
>>> s1 = "4"
>>> s2 = "5.4321"
>>> s3 = " -3.21 "
>>> s4 = "-8.9e-10"
>>> int(s1)
4
>>> float(s1)
4.0
>>> float(s2)
5.4321
>>> float(s3)
-3.21
>>> float(s4)
-8.9e-10
>>> int(s2)
Traceback (most recent call last):
File "", line 1, in ValueError: invalid literal for int() with base 10: '5.4321'
}}
int関数に浮動小数点数を表す文字列を与えると、エラーが発生する。文字列の前後に空白が含まれていてもかまわない。正負の記号も問題ない。指数表記をした文字列でもかまわない。
** 浮動小数点数を任意の桁数表示の文字列に変換する
formatメソッドを使う。書式の指定に f を使う。
#highlight(){{
>>> "{0:.4f} {1:.4f}".format(12.34, 5.678)
'12.3400 5.6780'
>>> "{0:9.3f} {1:9.5f}".format(12.34, 5.678)
' 12.340 5.67800'
}}
コロン(:)の左側の数字は、formatメソッドの何番目の引数かということ。0から始まることに注意。
** 小数点以下の四捨五入を行う
round関数を使う。JIS Z 8401に基づくいわゆる偶数丸めであることに注意。
#highlight(){{
>>> ds = [0.4, 0.5, 0.6, 1.4, 1.5, 1.6]
>>> for d in ds:
... print(f"{d} -> {round(d)}")
...
0.4 -> 0
0.5 -> 0
0.6 -> 1
1.4 -> 1
1.5 -> 2
1.6 -> 2
>>> ds = [-0.4, -0.5, -0.6, -1.4, -1.5, -1.6]
>>> for d in ds:
... print(f"{d} -> {round(d)}")
...
-0.4 -> 0
-0.5 -> 0
-0.6 -> -1
-1.4 -> -1
-1.5 -> -2
-1.6 -> -2
}}
** 小数点以下の切り捨てを行う
mathモジュールのtrunc関数を使う。引数に与えた数値の小数点以下を、強制的に切り捨てていると考えればよい。
#highlight(){{
>>> ds = [0.4, 0.5, 0.6, 1.4, 1.5, 1.6]
>>> for d in ds:
... print(f"{d} -> {math.trunc(d)}")
...
0.4 -> 0
0.5 -> 0
0.6 -> 0
1.4 -> 1
1.5 -> 1
1.6 -> 1
>>> ds = [-0.4, -0.5, -0.6, -1.4, -1.5, -1.6]
>>> for d in ds:
... print(f"{d} -> {math.trunc(d)}")
...
-0.4 -> 0
-0.5 -> 0
-0.6 -> 0
-1.4 -> -1
-1.5 -> -1
-1.6 -> -1
}}
似たような機能を持つfloor関数もあるが、こちらは小数点以下を強制的に切り捨てているのではなく、引数に与えた数値を超えない最大の整数を返すことに注意。つまり、負数の場合はtrunc関数とfloor関数では動作が異なる。
#highlight(){{
>>> import math
>>> ds = [0.4, 0.5, 0.6, 1.4, 1.5, 1.6]
>>> for d in ds:
... print(f"{d} -> {math.floor(d)}")
...
0.4 -> 0
0.5 -> 0
0.6 -> 0
1.4 -> 1
1.5 -> 1
1.6 -> 1
>>> ds = [-0.4, -0.5, -0.6, -1.4, -1.5, -1.6]
>>> for d in ds:
... print(f"{d} -> {math.floor(d)}")
...
-0.4 -> -1
-0.5 -> -1
-0.6 -> -1
-1.4 -> -2
-1.5 -> -2
-1.6 -> -2
}}
** 目次
#contents
** 数値を表す文字列を数値に変換する
整数に変換する場合はint関数を、浮動小数点数(小数点以下の数値を含む数)に変換する場合はfloat関数を使う。
#highlight(){{
>>> s1 = "4"
>>> s2 = "5.4321"
>>> s3 = " -3.21 "
>>> s4 = "-8.9e-10"
>>> int(s1)
4
>>> float(s1)
4.0
>>> float(s2)
5.4321
>>> float(s3)
-3.21
>>> float(s4)
-8.9e-10
>>> int(s2)
Traceback (most recent call last):
File "", line 1, in ValueError: invalid literal for int() with base 10: '5.4321'
}}
int関数に浮動小数点数を表す文字列を与えると、エラーが発生する。文字列の前後に空白が含まれていてもかまわない。正負の記号も問題ない。指数表記をした文字列でもかまわない。
** 浮動小数点数を任意の桁数表示の文字列に変換する
formatメソッドを使う。書式の指定に f を使う。
#highlight(){{
>>> "{0:.4f} {1:.4f}".format(12.34, 5.678)
'12.3400 5.6780'
>>> "{0:9.3f} {1:9.5f}".format(12.34, 5.678)
' 12.340 5.67800'
}}
コロン(:)の左側の数字は、formatメソッドの何番目の引数かということ。0から始まることに注意。
** 小数点以下の四捨五入を行う
round関数を使う。JIS Z 8401に基づくいわゆる偶数丸めであることに注意。
#highlight(){{
>>> ds = [0.4, 0.5, 0.6, 1.4, 1.5, 1.6]
>>> for d in ds:
... print(f"{d} -> {round(d)}")
...
0.4 -> 0
0.5 -> 0
0.6 -> 1
1.4 -> 1
1.5 -> 2
1.6 -> 2
>>> ds = [-0.4, -0.5, -0.6, -1.4, -1.5, -1.6]
>>> for d in ds:
... print(f"{d} -> {round(d)}")
...
-0.4 -> 0
-0.5 -> 0
-0.6 -> -1
-1.4 -> -1
-1.5 -> -2
-1.6 -> -2
}}
** 小数点以下の切り捨てを行う
mathモジュールのtrunc関数を使う。引数に与えた数値の小数点以下を、強制的に切り捨てていると考えればよい。
#highlight(){{
>>> ds = [0.4, 0.5, 0.6, 1.4, 1.5, 1.6]
>>> for d in ds:
... print(f"{d} -> {math.trunc(d)}")
...
0.4 -> 0
0.5 -> 0
0.6 -> 0
1.4 -> 1
1.5 -> 1
1.6 -> 1
>>> ds = [-0.4, -0.5, -0.6, -1.4, -1.5, -1.6]
>>> for d in ds:
... print(f"{d} -> {math.trunc(d)}")
...
-0.4 -> 0
-0.5 -> 0
-0.6 -> 0
-1.4 -> -1
-1.5 -> -1
-1.6 -> -1
}}
似たような機能を持つfloor関数もあるが、こちらは小数点以下を強制的に切り捨てているのではなく、引数に与えた数値を超えない最大の整数を返すことに注意。つまり、負数の場合はtrunc関数とfloor関数では動作が異なる。
#highlight(){{
>>> import math
>>> ds = [0.4, 0.5, 0.6, 1.4, 1.5, 1.6]
>>> for d in ds:
... print(f"{d} -> {math.floor(d)}")
...
0.4 -> 0
0.5 -> 0
0.6 -> 0
1.4 -> 1
1.5 -> 1
1.6 -> 1
>>> ds = [-0.4, -0.5, -0.6, -1.4, -1.5, -1.6]
>>> for d in ds:
... print(f"{d} -> {math.floor(d)}")
...
-0.4 -> -1
-0.5 -> -1
-0.6 -> -1
-1.4 -> -2
-1.5 -> -2
-1.6 -> -2
}}
** 小数点以下の切り上げを行う [#y127ac23]
mathモジュールのceil関数を使う。厳密には、引数に与えた数値より大きい最小の整数を返すことに注意。
#highlight(){{
>>> import math
>>> ds = [0.4, 0.5, 0.6, 1.4, 1.5, 1.6]
>>> for d in ds:
... print(f"{d} -> {math.ceil(d)}")
...
0.4 -> 1
0.5 -> 1
0.6 -> 1
1.4 -> 2
1.5 -> 2
1.6 -> 2
>>> ds = [-0.4, -0.5, -0.6, -1.4, -1.5, -1.6]
>>> for d in ds:
... print(f"{d} -> {math.ceil(d)}")
...
-0.4 -> 0
-0.5 -> 0
-0.6 -> 0
-1.4 -> -1
-1.5 -> -1
-1.6 -> -1
}}
表示オプション
横に並べて表示:
変化行の前後のみ表示: