「数と式」の編集履歴(バックアップ)一覧に戻る
数と式 - (2025/02/16 (日) 19:24:29) のソース
** 目次 #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 }}