Получение значений с плавающей точкой из PostgreSQL - PullRequest
2 голосов
/ 08 июня 2010

У меня проблемы с получением значений с плавающей запятой / реальных значений из PostgreSQL.

Например, я хотел бы сохранить: 123456789123456, получить тот же самый номер с помощью оператора select.

Таблица Табл (Num Real) вставить в значения tbl (num) ('123456789123456');

Как и сейчас, если я "выберу num from tbl", результат будет "1.23457e + 14" Если я запускаю «выберите CAST (num AS numeric) как num from tbl», то результат будет 123457000000000 Если я запускаю «выберите CAST (num AS float) как num from tbl», то результат будет 123456788103168 (откуда это число пришло)

Как же я могу выбрать значение и в результате получить "123456789123456"?

Большое спасибо заранее

Ответы [ 2 ]

4 голосов
/ 08 июня 2010

Вы объявили таблицу со столбцом, имеющим тип "real", который представляет собой число с плавающей точкой с довольно низкой точностью.

Возможно, вы захотите использовать тип "двойной точности" (он же "float" или "float8") для разумной степени точности с плавающей точкой. Если вы знаете величину и точность чисел, которые необходимо сохранить, лучше указать тип столбца вместо numeric(PREC,SCALE) - PREC - это общее количество сохраняемых цифр, и SCALE - количество цифр, справа от десятичной точки.

0 голосов
/ 08 июня 2010

Реальный тип имеет только 6 десятичных цифр точности, поэтому он не может точно хранить ваш номер. Вам может понадобиться использовать тип с «двойной точностью» или «числовой / десятичный».

Источник: http://www.postgresql.org/docs/8.4/static/datatype-numeric.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...