Truncar y Redondear Flotantes en Python
Eh creado esta entrada para mostrar estas 2 funciones muy útiles al momento de programar con Python, cual es la diferencia entre truncar y redondear, cuando truncamos un numero básicamente cortamos la cantidad a cierto numero de decimales sin importar si este podría redondearse hacia arriba o hacia abajo, lo que básicamente hacemos al redondear.
Para truncar un numero en python utilizamos la función format:
"{0:.4f}".format(12.05464897987) # El resultado seria 12.0546 # En la expresión {0:.2f}, en el lado del # valor del diccionario indicamos # el numero de decimales. # Seguido del metodo format y dentro la # cantidad a truncar. ## Con separación de miles: ## '{0:,.4f}'.format(o.initial_balance)
Para redondear un numero en pyhton utilizamos la función round:
round(12.05464897987,2) # El resultado seria 12.0547 # Ejecutamos el metodo round y este recibe: # - Cantidad # - Numero de Decimales a redondear.
puse en python round(12.05464897987,2) y da 12.05, no lo que ponen aquí(12.0547)
ResponderBorrarPara colocar 4 decimales, tienes que poner (val, 4), en val pones el numero a trabajar
Borrares como si hubieras dichi que redondeara el numero a dos cifras, debes poner: round(la variable,numero de cifras a redondear)
Borrarcomo usar este codigo en odoo?
ResponderBorrarEn Qweb se puede utilizar y tambien en campos calculados, metodos y demas, la metodologia cambiaria el valor fijo por la instancia del registro y el nombre del campo:
Borrar"{0:.4f}".format(self.price_unit)
round(self.price_unit, 4)
Este comentario ha sido eliminado por el autor.
ResponderBorrarEstoy probando en odoo 10 su sucede lo siguiente:
ResponderBorrarAl usar cost_price = fields.Float(digits=(10,5)en .py inicialmente se muestra 5 dígitos, sin embargo al editar y hacer clic en el campo automáticamente regresa a 2 decimales... como truncar para mantener en 5 dígitos en la vista?
Lo mejor es que cambies digits por una precisión decimal, dp
Borrarfrom odoo.tools import dp
cost_price = fields.Float('Costo', digits=dp.get_precision('Account'))
Te está diciendo que ese número va a quedar con dos decimales.
ResponderBorrarEn el ejemplo descrito sí.
Borrarhola, si yo quiero que pasado el",1" lo redondee y de número entero siguiente cómo sería?
ResponderBorrarSeria mas sencillo hacerlo mediante tu propio método o utilizando una expresión regular posiblemente también se podría.
BorrarSe puede redondear en Tkinter??
ResponderBorrarsi quiero que redondee con solo 1 decimal como hago?
ResponderBorrarEste comentario ha sido eliminado por el autor.
ResponderBorrar