我无法从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”?
非常感谢
答案 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。