Floating-point Data Types
Go Up to Defining Numeric Data Types
InterBase provides two floating-point data types,
DOUBLE PRECISION; the only difference is their size.
FLOAT specifies a single-precision, 32-bit data type with a precision of approximately 7 decimal digits.
DOUBLE PRECISION specifies a double-precision, 64-bit data type with a precision of approximately 15 decimal digits.
The precision of
DOUBLE PRECISION is fixed by their size, but the scale is not, and you cannot control the formatting of the scale. With floating numeric data types, the placement of the decimal point can vary; the position of the decimal is allowed to “float.” For example, in the same column, one value could be stored as 25.33333, and another could be stored as 25.333.
Use floating-point numbers when you expect the placement of the decimal point to vary, and for applications where the data values have a very wide range, such as in scientific calculations.
If the value stored is outside of the range of the precision of the floating-point number, then it is stored only approximately, with its least-significant digits treated as zeros. For example, if the type is
FLOAT, you are limited to 7 digits of precision. If you insert a 10-digit number 25.33333312 into the column, it is stored as 25.33333.
The next statement creates a column,
PERCENT_CHANGE, using a
CREATE TABLE SALARY_HISTORY (. . . PERCENT_CHANGE DOUBLE PRECISION DEFAULT 0 NOT NULL CHECK (PERCENT_CHANGE BETWEEN -50 AND 50), . . .);
You can perform the following operations on
DOUBLE PRECISION data types:
- Comparisons using the standard relational operators (=, <, >, >=, <=). Other operators such as
STARTING WITH, and
LIKEperform string comparisons on the integer portion of floating data.
- Arithmetic operations. The standard arithmetic operators determine the sum, difference, product, or dividend of two or more integers.
- Conversions. When performing arithmetic operations that involve mixed data types, InterBase automatically converts between
CHARdata types. For operations that involve comparisons of numeric data with other data types, such as
INTEGER, InterBase first converts the data to a numeric type, then compares them numerically.
- Sorts. By default, a query retrieves rows in the exact order that it finds them in the table, which is likely to be unordered. Sort rows using the
ORDER BYclause of a
SELECTstatement in descending or ascending order.
CREATE TABLE statement provides an example of how the different numeric types can be used: an
INTEGER for the total number of orders, a fixed
DECIMAL for the dollar value of total sales, and a
FLOAT for a discount rate applied to the sale.
CREATE TABLE SALES (. . . QTY_ORDERED INTEGER DEFAULT 1 CHECK (QTY_ORDERED >= 1), TOTAL_VALUE DECIMAL (9,2) CHECK (TOTAL_VALUE >= 0), DISCOUNT FLOAT DEFAULT 0 CHECK (DISCOUNT >= 0 AND DISCOUNT <= 1));