Je génère 10 flottants aléatoires entre 6 et 8 (tous pour une bonne raison), et les écrit dans une base de données mysql sous une forme sérialisée. Mais une bizarrerie semble émerger au moment de stockage:PHP - Sérialiser les points flottants
Avant de ranger Je suis juste pour sortir les mêmes données pour voir à quoi il ressemble, et c'est le résultat que je reçois
a:10:{i:0;d:6.20000000000000017763568394002504646778106689453125;i:1;d:7.5999999999999996447286321199499070644378662109375;i:2;d:6.4000000000000003552713678800500929355621337890625;..}
Comme vous pouvez le voir , Je reçois des nombres longs comme 6.20000000000000017763568394002504646778106689453125 au lieu de ce que je voudrais vraiment voir, juste 6.2. Cela se produit uniquement lorsque je sérialise les données, si je ne fais que sortir le tableau, j'obtiens les flottants à une décimale. Voici mon code:
function random_float ($min,$max) {
return ($min+lcg_value()*(abs($max-$min)));
}
$a1 = random_float(6, 8);
$a1 = round($a1, 1);
$a2 = random_float(6, 8);
$a2 = round($a2, 1);
$a3 = random_float(6, 8);
$a3 = round($a3, 1);
...
$array = array($a1, $a2, $a3, $a4, $a5, $a6, $a7, $a8, $a9, $a10);
echo serialize($array);
Ressemble tours d'écho lui-même flotte, mais c'est étrange – usoban