Je tente de stocker la valeur de virgule flottante PHP 63.59072952118762 dans une colonne double précision dans postgres. Postgres stocke la valeur en tant que 63.59073. Quelqu'un sait-il pourquoi? 8 octets devrait être plus que suffisant pour cette valeur. J'ai essayé avec le type de données numérique, qui fonctionne en spécifiant la précision, mais cela ne devrait pas vraiment être nécessaire.Pourquoi postgresql ne stocke-t-il pas toute ma valeur flottante (PHP)?
Mise à jour: Le même problème est présent lorsque vous essayez de stocker 63.5907295, donc la suggestion que quelque chose se passe avec le double avant qu'il ne soit stocké semble réaliste.
Update II (partiellement résolu): La ligne où j'attribue la double paramètre ressemble à ceci:
$stmt->bindParam(4, $this->latitude);
La chose que je ne savais pas que par défaut PDO son type de chaîne à param. Je l'ai changé en PDO :: PARAM INT en l'absence d'une meilleure alternative (PARAM DOUBLE n'était pas une option), et j'ai obtenu 10 chiffres de précision dans le double stocké dans postgres (quelques progrès, au moins). J'ai vérifié que le type numérique fonctionne bien, donc il semble que le numérique soit le chemin à parcourir quand on utilise PDO et double qui doit avoir une précision de plus de 10 décimales. De toute façon, comme quelqu'un l'a mentionné, je ne sais pas si c'est une nécessité pour moi d'avoir ce genre de précision, mais je pense que le problème en lui-même méritait d'être étudié.
Avez-vous besoin que beaucoup de chiffres significatifs? Les calculs qui sont assez rares, d'après mon expérience (en particulier si SQL est approprié pour l'espace problème). Si vous le faites, peut-être que vous devriez utiliser NUMERIC, pas FLOAT. – kquinn