I did a little bit of testing in Oracle. For DECIMAL and NUMERIC, it truncates a decimal value silently if you declare it as DECIMAL and insert a non integer value. Can you find out what Postgres does and perhaps we should just do that?