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

时间:2018-10-19 13:29:26

标签: python python-3.x rounding

在使用20181016135716, 00-00-00-00-00-04, 10.0.0.1, 10.0.0.8, 6, 3, 198, 3, 155000000, 3, 198, 3, 155000000, 62.757528 20181016135716, 00-00-00-00-00-04, 10.0.0.8, 10.0.0.1, 6, 2, 132, 3, 123000000, 2, 132, 3, 123000000, 42.267051 函数时,我注意到有两种不同的结果,具体取决于我是否明确选择要包含的小数位数还是选择0。

import csv
with open('output.csv', 'r') as f:
    for row in (list(csv.reader(f))):
        print(', '.join(row)[-1])

它打印以下内容:

round()

有什么区别?

4 个答案:

答案 0 :(得分:38)

如果未指定第二个参数,则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.

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

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

出于完整性考虑:

负数用于四舍五入到小数点前

>>> round(124638, -2)
124600
>>> round(15432.346, -2)
15400.0

答案 1 :(得分:13)

当您指定小数位数时,即使该数字为0,也将调用返回浮点数的方法的版本。因此,获得该结果是正常的。

答案 2 :(得分:0)

Python中的round()函数具有两个参数:

  1. 数字-要四舍五入的数字
  2. 位数(可选)-给定数字要四舍五入到的位数。

无论何时使用第二个参数,Python都会自动将返回值的数据类型转换为float。如果不使用第二个可选参数,则数据类型将保持为整数。

因此,传递参数时为4.0,而不传递参数时为4。

答案 3 :(得分:0)

我认为值得一提的是,您不仅会遇到round(int)或round(float),而且还会遇到例如round(class'numpy.float64')。在这种情况下,即使“省略n位数字或无”,回合也不会返回整数。 (例如“内置函数”文档中所述),但是类的类型为numpy.float64。我分析了代码示例,并在python 3.7.3中碰到了round(x)打印“ 10.0”