PostgreSQL 8.1 整数型の列に小数を保存すると四捨五入される

整数型の列に小数を保存しようとすると四捨五入される。

test=> CREATE TABLE hoge (id integer, value integer);
CREATE TABLE
test=> INSERT INTO hoge VALUES(1, 0.4);
INSERT 0 1
test=> INSERT INTO hoge VALUES(2, 0.5);
INSERT 0 1
test=> SELECT * FROM hoge ORDER BY id;
 id | value
----+-------
  1 |     0
  2 |     1
(2 rows)

0.4 → 0
0.5 → 1
四捨五入されている。

test=> CREATE TABLE hoge2 (id integer, value bigint);
CREATE TABLE
test=> INSERT INTO hoge2 VALUES(1, 0.4);
INSERT 0 1
test=> INSERT INTO hoge2 VALUES(2, 0.5);
INSERT 0 1
test=> SELECT * FROM hoge2 ORDER BY id;
 id | value
----+-------
  1 |     0
  2 |     1
(2 rows)

bigintでも同じ。

test=> CREATE TABLE hoge3 (id integer, value numeric(1,0));
CREATE TABLE
test=> INSERT INTO hoge3 VALUES(1, 0.4);
INSERT 0 1
test=> INSERT INTO hoge3 VALUES(2, 0.5);
INSERT 0 1
test=> SELECT * FROM hoge3 ORDER BY id;
 id | value
----+-------
  1 |     0
  2 |     1
(2 rows)

numericの位取り0でも。