Don’t use these ( inexact ) postgresql data types if you need exact calculations

Here’s the definitive postgresql docs. on the all simple (not compound) numeric datatypes subject (V 14)

https://www.postgresql.org/docs/current/datatype-numeric.html

So why do “real” and “double precision” datatypes exist if they are not accurate. Sometimes close is good enough 😉

Name	Storage Size	Description	Range

smallint	2 bytes	small-range integer	-32768 to +32767
integer	4 bytes	typical choice for integer	-2147483648 to +2147483647
bigint	8 bytes	large-range integer	-9223372036854775808 to +9223372036854775807

decimal	variable	user-specified precision, exact	up to 131072 digits before the decimal point; up to 16383 digits after the decimal point
numeric	variable	user-specified precision, exact	up to 131072 digits before the decimal point; up to 16383 digits after the decimal point

real	4 bytes	variable-precision, inexact	6 decimal digits precision
double precision	8 bytes	variable-precision, inexact	15 decimal digits precision

smallserial	2 bytes	small autoincrementing integer	1 to 32767
serial	4 bytes	autoincrementing integer	1 to 2147483647
bigserial	8 bytes	large autoincrementing integer	1 to 9223372036854775807

Leave a Comment

Scroll to Top