J'avais une base de données avec des données monétaires enregistrées dans un type float. J'avais un problème. Certaines données, au lieu d'enregistrer par exemple 2545,23 me retournait suite à un SELECT 2545,22999999999.

En remplaçant les floats par un decimal le problème est réglé.
Après investigation sur le float versus le decimal voici ce que j'ai trouvé.

Un float enregistre les données après la virgule de façon a représenter des fractions et par la suite elles sont additionnées.
Donc le premier bit représente 1/2, le deuxième 1/4, le troisième 1/8, ainsi de suite. Le float permet d'avoir plus de données de long mais n'est pas précis. Si l'on enregistre 0,5, le nombre sera exact par contre si l'on enregistre 0,2 il ne le sera pas car il n'y a pas de fraction exacte.

Par contre le decimal permet d'enregistrer un nombre précis après la virgule mais permet d'en enregistrer moins long pour le même espace mémoire que le float.

Pour conclure, utilisez donc le decimal pour enregistrer des données précise, officielles ou légales comme de l'argent.