round()根据参数的数量返回不同的结果

Pet*_*fer 36 python rounding python-3.x

在使用round()函数时,我注意到我得到了两个不同的结果,具体取决于我是否没有明确选择要包含的小数位数或选择数字为0.

x = 4.1
print(round(x))
print(round(x, 0))
Run Code Online (Sandbox Code Playgroud)

它打印以下内容:

4
4.0
Run Code Online (Sandbox Code Playgroud)

有什么不同?

Ani*_*lur 37

如果未指定第二个参数,round函数将返回一个整数,否则返回值与第一个参数的类型相同:

>>> 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.
Run Code Online (Sandbox Code Playgroud)

因此,如果传递的参数是整数和零,则返回值将是整数类型:

>>> round(100, 0)
100
>>> round(100, 1)
100
Run Code Online (Sandbox Code Playgroud)

为了完整起见:

负数用于小数点前的舍入

>>> round(124638, -2)
124600
>>> round(15432.346, -2)
15400.0
Run Code Online (Sandbox Code Playgroud)

  • 我不知道你可以在`round()`上使用负数.很高兴知道! (3认同)
  • 嗯,这里答案中最重要的部分是"帮助"功能,因为这样可以让任何人得到答案等等. (2认同)

Waz*_*aki 13

指定小数位数时,即使该数字为0,也要调用返回浮点数的方法的版本.所以你得到那个结果是很正常的.

  • 是的,非常简单明了.就像它在`help(round)`中所说的那样,它在使用一个参数调用时返回一个int,否则与数字相同." (3认同)
  • 可能想链接到[docs](https://docs.python.org/3.5/library/functions.html#round)并引用第一句话. (3认同)
  • "返回浮点数的方法的版本"没有重载或返回类型,这只是一个`if`语句检查`args` (2认同)