round print float decimals aproximar python format

print - round float python 3



Formatee el float de Python truncado como int en una cadena (3)

Es posible ampliar el lenguaje de formato de cadena estándar extendiendo la cadena de clase.

class MyFormatter(Formatter): def format_field(self, value, format_spec): if format_spec == ''t'': # Truncate and render as int return str(int(value)) return super(MyFormatter, self).format_field(value, format_spec) MyFormatter().format("{0} {1:t}", "Hello", 4.567) # returns "Hello 4"

Un rápido obvio:

some_float = 1234.5678 print ''%02d'' % some_float # 1234 some_float = 1234.5678 print ''{WHAT?}''.format(some_float) # I want 1234 here too

Nota: {:.0f} no es una opción, porque redondea (devuelve 1235 en este ejemplo).

format(..., int(some_float)) es exactamente lo que intento evitar, por favor no sugiera eso.


Esto funciona:

from math import trunc some_float = 1234.5678 print ''{:d}''.format(trunc(some_float)) => 1234

O simplemente haz esto, para el caso:

print trunc(some_float) => 1234

Creo que es una respuesta aceptable, evita la conversión a int . Tenga en cuenta que en este fragmento de ''%02d'' % some_float : ''%02d'' % some_float está ocurriendo una conversión implícita a int , no puede evitar algún tipo de conversión para imprimir en el formato deseado.


Esto también funcionará:

some_float = 1234.5678 f = lambda x: str(x)[:str(x).find(''.'')] print ''{}''.format(f(some_float)) => 1234

Después de hacer una prueba de% timeit, parece que la función trunc de la biblioteca matemática es más rápida, por math.trunc que sería preferible math.trunc si necesita formatear muchos números de esta manera.