What are precision and scale for numeric data types in Postgres?

Viewed 11089
2 Answers

Use numeric(4, 1).

This gives you a total of 4 digits maximum (including the decimal part), with 1 digit reserved for the decimals, so this would store numbers up until 999.9.

If you can live with numbers that are not greater than 99.9, then numeric(3, 1) is fine.

NUMERIC(4,1) will do, but this will also accept decimals such as:

55.0
26.3
978.1

This is because precision declares maximum of digits a number can hold and scale relates to decimal part. You would also need to validate your input.

If you wish to do this at database level, you could use CHECK column_name <= 100.0. Such check could also be extended to accept only numbers with .0 and .5 decimal part (see modulo operator).

Related