PHP - Serialize floating points

前端 未结 9 1485
自闭症患者
自闭症患者 2021-01-02 02:19

I am generating 10 random floats between 6 and 8 (all for good reason), and writing them to a mysql database in a serialized form. But one quirk seems to emerge at the stora

9条回答
  •  爱一瞬间的悲伤
    2021-01-02 03:03

    Casting also works, and it is faster, Example:

    $a = 0.631;
    $b = serialize($a);
    $c = serialize((string)$a);
    var_dump($b);
    

    string(57) "d:0.6310000000000000053290705182007513940334320068359375;"

    var_dump($c);
    

    string(12) "s:5:"0.631";"

    var_dump(unserialize($b));
    

    float(0.631)

    var_dump(unserialize($c));
    

    string(5) "0.631"

    The important thing is to cast it back on unserialize:

    var_dump((float)unserialize($c));
    

    float(0.631)

提交回复
热议问题