Hello Mike,

peut-être utilises-tu le type float pour ta valeur en base de données
(MySQL j'imagine ?) MySQL stocke les "float" sur 4 octets (cf
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html) ce qui ne
permet pas de mémoriser un décimal avec une grande précision.

Dans ton cas, si Price est un model avec :price_as_float une colonne
en float, tu auras:

>> Price.create(:price_as_float => 96.20825).reload.price_as_float
=> 96.2083
(et non 96.20825)

Côté base tu auras un:

INSERT INTO prices (price_as_float) VALUES(96.20825)
qui stockera au final 96.2083 et non 96.20825

Si tu dois stocker des chiffres avec une meilleure précision, tu peux
t'orienter vers t.decimal :price_as_decimal, :precision => 30, :scale
=> 20 (précision et scale à adapter en fonction de tes besoins -
regarde la doc MySQL de près). Ex:

>> Price.create(:price_as_decimal => 96.20825).reload.price_as_decimal == 
>> 96.20825
=> true

Si tu veux tout savoir sur le pourquoi du comment (stockage en mémoire
des flottants), je pense que tu trouveras l'article suivant
intéressant:

http://www.codeproject.com/KB/dotnet/ExtremeFloatingPoint1.aspx

good luck!

Thibaut Barrère / LoGeek
--
http://blog.logeek.fr - learning content for developers
http://evolvingworker.com - tools for a better day
http://faire-autrement.fr - la simplicité au quotidien
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---

Répondre à