PostgreSQL实型vs双重类型查询结果混乱

时间:2019-03-23 15:30:48

标签: sql postgresql

我有下表:

CREATE TABLE number_data_types 
(
    numeric_column NUMERIC(20,5),
    real_column REAL,
    double_column DOUBLE PRECISION
);

插入以下示例数据:

INSERT INTO number_data_types
VALUES
    (2.13579, 2.13579, 2.13579),
    (2.1357987654, 2.1357987654, 2.1357987654);

SELECT * FROM number_data_types;

结果:

2.13579;2.13579;2.13579
2.13580;2.1358;2.1357987654

第二行查询结果为何是REAL类型的“ 2.1358”

1 个答案:

答案 0 :(得分:1)

我不太了解这个问题。您有两个值:

2.13579
2.1357987654

当Postgres放置实际值时,它将删除结尾的零。至少有六个有效数字,所以这些数字被解释为非常接近:

2.13579
2.13580

但是,0在结果集中被抑制。如果将2.13580插入实列,您将很容易看到这一点。