La précision des float n’est pas infinie. Suivant votre cas d’utilisation il faut y faire très attention.
« C’est 1€ pour ce délicieux chocolat. »
« Parfait, j’ai 10 pièces de 10 centimes. »
« Désolé, c’est pas assez ! »

Ruby peut résoudre ce problème grâce au type Rational, qu’il gère nativement.
« Ok, maintenant vous avez assez. »

Le lien vers la documentation Ruby de Rational