24-06-2011, 01:44 PM
bonjour
j'avais abordé le sujet ici concernant JavaScript : http://www.jeuweb.org/showthread.php?tid=6816 et il se trouve que j'ai un problème vaguement similaire:
quand on sérialize un float comme par exemple 1.01 on se retrouve avec une valeur telle que :
1.0100000000000000088817841970012523233890533447265625
ce qui est normal car en binaire 1.01 ne peut être représenté
le problème c'est que je stocke des objets sérialisés en bdd et que ca prend pas mal de place pour rien que de sérialiser des float, donc je fais ceci:
en gros je triche avec le typage faible de php et transtype mon float en string
je sens que vous allez me dire que c'est une bidouille pourrie, mais comment faire autrement ?
bonne journée
j'avais abordé le sujet ici concernant JavaScript : http://www.jeuweb.org/showthread.php?tid=6816 et il se trouve que j'ai un problème vaguement similaire:
quand on sérialize un float comme par exemple 1.01 on se retrouve avec une valeur telle que :
1.0100000000000000088817841970012523233890533447265625
ce qui est normal car en binaire 1.01 ne peut être représenté
le problème c'est que je stocke des objets sérialisés en bdd et que ca prend pas mal de place pour rien que de sérialiser des float, donc je fais ceci:
$float = (string)round($float_to_serialize , 4);
en gros je triche avec le typage faible de php et transtype mon float en string
je sens que vous allez me dire que c'est une bidouille pourrie, mais comment faire autrement ?
bonne journée