Soy consciente de algunas buenas opciones :
Grandes enteros (por ejemplo, int64_t, mpz_t, cualquier bignum lib ) para representar centavos o 10 -n centavos, por ejemplo, un entero representa 1/100 de un centavo ($ 1.05 == 10500). Esto se llama un entero escalado .
Biblioteca de alto nivel para aritmética decimal de precisión arbitraria como BigDecimal en Java, Decimal en Python, decimal.js en Javascript, boost :: multiprecision en C ++
Instrumentos de cuerda.
Los BCD empaquetados (decimales codificados en binario) es un método más esotérico que parecía popular en el software antiguo. Lee más sobre esto.
En el código de producción para bancos (o tarjetas de crédito, cajeros automáticos, sistemas POS), ¿qué tipo de datos se usa realmente más? Especialmente les pregunto a quienes trabajaban para los bancos.
EDITAR: enlaces súper útiles para aquellos con el mismo dominio problemático (que necesitan implementar una estructura de datos "monetaria" que no se rompa).
- http://martinfowler.com/eaaDev/quantity.html
- http://www.codeproject.com/Articles/28244/A-Money-type-for-the-CLR
- http://c2.com/cgi/wiki?MoneyObject
- http://www.setfiremedia.com/blog/7-top-tips-for-coding-with-currency
- http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
EDITAR para el compañero que dijo que esta es una pregunta duplicada : Esta es una pregunta práctica, no teórica, de "cuál es el mejor". Lea el título sin editar de mi pregunta. Me pregunto qué ha visto la gente de primera mano en las bases de códigos de los bancos.
Sé que BigDecimal es "el mejor" obviamente, pero buenas API como esa no están disponibles en todas partes, lo creas o no, y las bibliotecas decimales son caras en comparación con las entradas.