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でも。