Я пытаюсь сохранить значение PHP с плавающей запятой 63.59072952118762 в столбце с двойной точностью в postgres. Postgres сохраняет значение как 63,59073. Кто-нибудь знает почему? 8 байт должно быть более чем достаточно для этого значения. Я пытался использовать числовой тип данных, который работает при указании точности, но в этом нет необходимости.
Обновление: Та же проблема возникает при попытке сохранить 63.5907295, поэтому предположение, что что-то происходит с двойным числом перед сохранением, кажется реалистичным.
Обновление II (частично решено) : строка, в которой я назначаю двойной параметр, выглядит следующим образом:
$stmt->bindParam(4, $this->latitude);
Чего я не знал, так это того, что PDO по умолчанию использует свой тип параметра - string. Я изменил его на PDO :: PARAM INT из-за отсутствия лучшей альтернативы (PARAM DOUBLE не был выбран) и получил точность 10 цифр в двойном значении, хранимом в postgres (по крайней мере, некоторый прогресс). Я проверил, что числовой тип работает хорошо, поэтому кажется, что при использовании PDO лучше всего использовать числовой тип, который должен иметь точность более 10 десятичных знаков.
В любом случае, как кто-то упоминал, я не знаю, должна ли я иметь такую точность, но я думаю, что проблема сама по себе заслуживает изучения.