¿Redondear un número de punto flotante al entero más cercano?

Como sugiere el título, quiero tomar un número de punto flotante y redondearlo al entero más cercano. Sin embargo, si no es un todo, SIEMPRE quiero redondear hacia abajo la variable, independientemente de lo cerca que esté del siguiente entero. ¿Hay alguna forma de hacer esto?

Sencillo

print int(x) 

funcionará también

Uno de estos debería funcionar:

 import math math.trunc(1.5) > 1 math.trunc(-1.5) > -1 math.floor(1.5) > 1 math.floor(-1.5) > -2 

Creo que necesitas una función de piso:

math.floor (x)

Para obtener el resultado de punto flotante simplemente use:

 round(x-0.5) 

Funciona para números negativos también.

 x//1 

El operador // devuelve el piso de la división. Ya que dividir por 1 no cambia su número, esto es equivalente a piso pero no se necesita importación. Notas:
1) Esto devuelve un flotador
2) Esto redondea hacia -∞

Si no quieres importar matemáticas, puedes usar:

int(round(x))

Aquí hay una pieza de documentación:

 >>> help(round) Help on built-in function round in module __builtin__: round(...) round(number[, ndigits]) -> floating point number Round a number to a given precision in decimal digits (default 0 digits). This always returns a floating point number. Precision may be negative. 

Mucha gente dice usar:

  int(x) 

y esto funciona bien para la mayoría de los casos, pero hay un pequeño problema. Si el resultado de OP es:

  x = 1.9999999999999999 

se redondeará a

  x = 2 

después del día 16 redondeará. Esto no es un gran problema si está seguro de que nunca se encontrará con tal cosa. Pero es algo a tener en cuenta.

Si trabaja con numpy, puede usar la siguiente solución que también funciona con números negativos (también funciona con matrices)

 import numpy as np def round_down(num): if num < 0: return -np.ceil(abs(num)) else: return np.int32(num) round_down = np.vectorize(round_down) 

 round_down([-1.1, -1.5, -1.6, 0, 1.1, 1.5, 1.6]) > array([-2., -2., -2., 0., 1., 1., 1.]) 

Creo que también funcionará si solo usas el módulo math lugar del módulo numpy .

No sé si resolviste esto, pero me topé con esta pregunta. Si desea deshacerse de los puntos decimales, puede usar int (x) y eliminará todos los dígitos decimales. No hay necesidad de usar ronda (x).

Puede ser muy simple, pero ¿no podrías simplemente redondearlo luego menos 1? Por ejemplo:

 number=1.5 round(number)-1 > 1 

Solo redondee (x-0.5) esto siempre devolverá el siguiente valor Integer redondeado hacia abajo de su Flotador. También puede redondear fácilmente por redondeo (x + 0.5)

Utilicé este código donde restas 0.5 del número y cuando lo redondeas, es el número original redondeado hacia abajo.

redondo (a-0.5)