round () возвращает различный результат в зависимости от количества аргументов - PullRequest
0 голосов
/ 19 октября 2018

При использовании функции round() я заметил, что я получаю два разных результата в зависимости от того, явно ли я не выбираю число десятичных разрядов для включения или выбираю число равным 0.

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

Он печатает следующее:

4
4.0

В чем разница?

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

Функция round () в Python принимает два параметра:

  1. число - округляемое число
  2. количество цифр (необязательно) - количество цифр, до которогоданное число должно быть округлено.

Каждый раз, когда вы используете второй параметр, Python автоматически преобразует тип данных возвращаемого значения в число с плавающей точкой.Если вы не используете второй необязательный параметр, тип данных остается целым числом.

Следовательно, для параметра передается значение 4,0, а для параметра - 4.

0 голосов
/ 19 октября 2018

Функция округления возвращает целое число, если второй аргумент не указан, иначе возвращаемое значение имеет тот же тип, что и у первого аргумента:

>>> 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
0 голосов
/ 19 октября 2018

Когда вы указываете количество десятичных знаков, даже если это число равно 0, вы вызываете версию метода, которая возвращает число с плавающей запятой.Так что это нормально, что вы получите этот результат.

...