PHP 對 float 型別使用 JSON_encode () 精度缺失

善良的死神發表於2019-07-03

簡介

在專案中遇到過對 float 型別的數字進行 json_encode() 出現精度缺失的問題。

程式碼

    $info = 26.54;
    $res = json_encode($info);
    var_dump($res);

執行結果

string(18) "26.539999999999999"

原因

  1. 檢視 PHP 的 php.ini 檔案

    可透過 php --ini 檢視引入的 php.ini 檔案位置是在哪裡

    cqhC7nn9hk.png!largePWSYKkIfXy.png!largeV55u5QRNjG.png!large
  2. 更改配置

    按照網上的說法,改為 17 以下的數字就可以解決

    serialize_precision = 16

  3. 再次執行

    string(5) "26.54"

參考

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章