Sto generando 10 float casuali tra 6 e 8 (tutto per una buona ragione) e li scrivo in un database mysql in una forma serializzata. Ma un vezzo sembra emergere al tempo di conservazione:PHP - Serialize floating points
Prima di riporre sto solo emettere gli stessi dati per vedere come appare, e questo è il risultato che ottengo
a:10:{i:0;d:6.20000000000000017763568394002504646778106689453125;i:1;d:7.5999999999999996447286321199499070644378662109375;i:2;d:6.4000000000000003552713678800500929355621337890625;..}
Come si può vedere , Sto ricevendo numeri lunghi come 6.20000000000000017763568394002504646778106689453125 invece di quello che mi piacerebbe vedere, solo 6.2. Questo sta accadendo solo quando serializzo i dati, se ho appena emesso l'array, ottengo i float con un decimale. Ecco il mio codice:
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);
Sembra giri eco sé galleggianti, ma questo è strano – usoban