最近用 json_encode 儲存計算結果,因為計算結果有浮點數,就發現了神奇的現象。
要儲存的資料是
value = 3.36,但是透過 json_encode 之後,存進檔案竟然變成
{"value": 3.3599999999999999}
研究了一下發現,原來是 json_encode 預設採用 IEEE 754 的方式儲存,所以就 QQ 了~~
要解決這個方法很簡單,只需要調整 php.ini
把 serialize_precision 設為 -1 即可
serialize_precision = -1
或是透過 ini_set
ini_set("serialize_precision","-1");
也可以喔~~~