Specifying NUMERIC and DECIMAL with Scale and Precision
Go Up to Fixed-decimal Data Types
When a NUMERIC
or DECIMAL
data type declaration includes both precision and scale, values containing a fractional portion can be stored, and you can control the number of fractional digits. InterBase stores such values internally as SMALLINT
, INTEGER,
or 64-bit integer data, depending on the precision specified. How can a number with a fractional portion be stored as an integer value? For all SMALLINT
and INTEGER
data entered, InterBase stores a scale factor, a negative number indicating how many decimal places are contained in the number, based on the power of 10. A scale factor of –1 indicates a fractional portion of tenths; a –2 scale factor indicates a fractional portion of hundredths. You do not need to include the sign; it is negative by default.
For example, when you specify NUMERIC
(4,2), InterBase stores the number internally as a SMALLINT
. If you insert the number 25.253, it is stored as a decimal 25.25, with 4 digits of precision, and a scale of 2.
The number is divided by 10 to the power of <scale> (number/10 <scale>) to produce a number without a fractional portion.
See the Language Reference Guidefor information about arithmetic operations using exact and approximate numerics.