Я генерирую 10 случайных поплавков между 6 и 8 (все по уважительной причине) и записывая их в базу данных mysql в сериализованной форме. Но при хранении появляется одна причуда:
Перед сохранением я просто выводя те же данные, чтобы увидеть, как он выглядит, и это результат, который я получаю
a:10:{i:0;d:6.20000000000000017763568394002504646778106689453125;i:1;d:7.5999999999999996447286321199499070644378662109375;i:2;d:6.4000000000000003552713678800500929355621337890625;..}
Как вы можете видеть, я получаю длинные цифры, как 6.20000000000000017763568394002504646778106689453125 вместо того, что мне действительно понравится, всего 6.2. Это происходит только тогда, когда я сериализую данные, если я просто выдаю массив, я получаю поплавки до одного десятичного знака. Вот мой код:
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);