¿Cómo usar el formato de cadena de Python para convertir un entero que representa los centavos a un flotante que representa dólares?

Tengo un entero que representa un precio en centavos. Al usar cadenas de formato Python, ¿cómo puedo convertir este valor a dólares con dos decimales? Ejemplos:

1234 => 12.34 5 => 0.05 999 => 9.99 

EDIT: debería dar algunos antecedentes. Estoy almacenando los precios en una base de datos como enteros para asegurarme de que no pierdo precisión. No quiero usar el tipo de datos decimal porque estos valores también se usarán en los cálculos en Javascript, por lo que será más fácil trabajar con enteros para eso. Quiero poder mostrar en una plantilla de Django el valor formateado usando la etiqueta stringformat. Como tal, dividir el número por 100 no funciona. ¿Hay una manera de sumr el punto decimal sin dividir?

Debe esforzarse mucho para evitar el uso de flotadores para representar el dinero (la inexactitud numérica también puede aparecer). El módulo decimal proporciona un tipo de datos útil para representar el dinero, ya que puede representar exactamente números decimales, como 0.05.

Se puede utilizar así:

 import decimal cents = 999 dollars = decimal.Decimal(cents) / 100 print dollars 

Si no te importa la localización, simplemente divide por 100 y formatéala:

 >>> for cents in [ 1234, 5, 999 ]: ... '{0:.02f}'.format(float(cents) / 100.0) ... '12.34' '0.05' '9.99' 

Si le importa la localización, use el módulo de locale :

 >>> import locale >>> locale.setlocale(locale.LC_ALL, "") # use the user-default locale 'en_US.UTF-8' >>> for cents in [ 1234, 5, 999 ]: ... locale.currency(float(cents) / 100.0) ... '$12.34' '$0.05' '$9.99' 

Utilizando str.format :

 for i in (1234,5,999): print('{:.2f}'.format(i/100.)) 

rendimientos

 12.34 0.05 9.99 

En Python2.6 use '{0:.2f}' lugar de '{:.2f}' .