float - round up python
round() devuelve un resultado diferente dependiendo del número de argumentos (3)
Cuando especifica el número de decimales, incluso si ese número es 0, está llamando a la versión del método que devuelve un valor flotante. Así que es normal que obtengas ese resultado.
Mientras utilizaba la función round()
noté que obtenía dos resultados diferentes dependiendo de si no elegía explícitamente el número de lugares decimales para incluir o si elegía el número para ser 0.
x = 4.1
print(round(x))
print(round(x, 0))
Imprime lo siguiente:
4
4.0
¿Cuál es la diferencia?
La función de redondeo devuelve un entero si no se especifica el segundo argumento, de lo contrario, el valor de retorno tiene el mismo tipo que el del primer argumento:
>>> 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.
Entonces, si los argumentos pasados son un número entero y un cero, el valor de retorno será un tipo entero:
>>> round(100, 0)
100
>>> round(100, 1)
100
En aras de la exhaustividad:
Los números negativos se utilizan para redondear antes del lugar decimal
>>> round(124638, -2)
124600
>>> round(15432.346, -2)
15400.0
La función round () en Python toma dos parámetros:
- número - número a redondear
- número de dígitos (opcional): el número de dígitos hasta el cual se redondeará el número dado.
Siempre que use el segundo parámetro, Python convierte automáticamente el tipo de datos del valor de retorno a flotar. Si no usa el segundo parámetro opcional, el tipo de datos sigue siendo un entero.
Por lo tanto, es 4.0 cuando se pasa el parámetro y 4 cuando no lo es.