从PostgreSQL中获取浮点值

时间:2010-06-08 00:20:07

标签: postgresql

我无法从PostgreSQL中检索浮点数/实数值。

例如,我想存储:123456789123456,使用select语句检索完全相同的数字。

表tbl(num real) 插入到tbl(num)值('123456789123456');

就像现在一样,如果我“从tbl中选择数字”,结果是“1.23457e + 14” 如果我从tbl运行“select CAST(num AS numeric)as num”,结果为123457000000000 如果我从tbl运行“select CAST(num AS float)as num”,结果是123456788103168(这个数字来自哪里)

我怎样才能选择该值并获得“123456789123456”?

非常感谢

2 个答案:

答案 0 :(得分:4)

您使用类型为“real”的列声明了表,这是一个相当低精度的浮点数。

您可能希望使用“double precision”类型(又名“float”或“float8”)来获得合理的浮点精度。如果您知道需要存储的数字的大小和精度,最好将列类型声明为numeric(PREC,SCALE) - PREC是要保留的总位数,并且SCALE将是要保留的位数。在小数点右边。

答案 1 :(得分:0)

真实类型只有6位十进制数字,因此无法准确存储您的数字。您可能需要使用“双精度”或“数字/十进制”类型。

来源:http://www.postgresql.org/docs/8.4/static/datatype-numeric.html