【发布时间】:2010-11-09 17:18:07
【问题描述】:
我在 6 和 8 之间生成 10 个随机浮点数(所有这些都是有充分理由的),并将它们以序列化形式写入 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);
【问题讨论】:
-
看起来回声轮会自己漂浮,但这很奇怪
标签: php serialization random floating-point