PHPの浮動小数点値63.59072952118762をpostgresの倍精度列に格納しようとしています。Postgresは値を63.59073として保存します。誰かが理由を知っていますか?その値には8バイトで十分です。精度を指定するときに機能するデータ型numericを試してみましたが、実際には必要ありません。
更新: 63.5907295を保存しようとすると同じ問題が発生するため、保存される前にdoubleで何かが発生するという提案は現実的です。
Update II(部分的に解決済み):doubleパラメーターを割り当てる行は次のようになります。
$stmt->bindParam(4, $this->latitude);
私が知らなかったのは、PDOのデフォルトのパラメータタイプが文字列であるということです。私はそれをPDO::PARAM INTに変更しましたが、より良い代替手段がなく(PARAM DOUBLEはオプションではありませんでした)、postgresに格納されたdoubleで10桁の精度が得られました(少なくともある程度の進歩)。数値タイプが適切に機能することを確認したので、数値はPDOを使用する場合の方法であり、小数点以下10桁を超える精度が必要なdoubleを使用する方法のようです。
とにかく、誰かが言ったように、私がこの種の精度を持つことが必須であるかどうかはわかりませんが、問題自体は調査する価値があると思います。