web-dev-qa-db-ja.com

round()は、引数の数に応じて異なる結果を返します

round()関数の使用中に、含める小数点以下の桁数を明示的に選択しないか、0になるように選択するかによって、2つの異なる結果が得られることに気付きました。

x = 4.1
print(round(x))
print(round(x, 0))

以下を印刷します。

4
4.0

違いはなんですか?

36
Peter Hofer

Round関数は、2番目の引数が指定されていない場合は整数を返します。それ以外の場合、戻り値は最初の引数と同じ型を持ちます。

>>> help(round)
Help on built-in function round in module builtins:

round(number, ndigits=None)
    Round a number to a given precision in decimal digits.

    The return value is an integer if ndigits is omitted or None. Otherwise
    the return value has the same type as the number. ndigits may be negative.

したがって、渡された引数が整数とゼロの場合、戻り値は整数型になります。

>>> round(100, 0)
100
>>> round(100, 1)
100

完全を期すために:

負の数は、小数点の前の丸めに使用されます

>>> round(124638, -2)
124600
>>> round(15432.346, -2)
15400.0
38
Aniket Navlur

小数の数を指定すると、その数が0であっても、floatを返すメソッドのバージョンを呼び出しています。したがって、その結果が得られるのは正常です。

13
Wazaki

Pythonのround()関数は、2つのパラメーターを取ります。

  1. 数値-丸められる数値
  2. 桁数(オプション)-指定された数値が切り上げられる桁数。

2番目のパラメーターを使用するたびに、Pythonは自動的に戻り値のデータ型をfloatに変換します。2番目のオプションパラメーターを使用しない場合、データ型は整数のままです。

したがって、パラメーターが渡される場合は4.0で、渡されない場合は4です。

0
codelyzer