Syntax
------

DOUBLE[(M,D)] [SIGNED | UNSIGNED | ZEROFILL]
DOUBLE PRECISION[(M,D)] [SIGNED | UNSIGNED | ZEROFILL]
REAL[(M,D)] [SIGNED | UNSIGNED | ZEROFILL]

Description
-----------

A normal-size (double-precision) floating-point number (see FLOAT for a
single-precision floating-point number).

Allowable values are:

* -1.7976931348623157E+308 to -2.2250738585072014E-308
* 0
* 2.2250738585072014E-308 to 1.7976931348623157E+308

These are the theoretical limits, based on the IEEE standard. The actual range
might be slightly smaller depending on your hardware or operating system.

M is the total number of digits and D is the number of digits following the
decimal point. If M and D are omitted, values are stored to the limits allowed
by the hardware. A double-precision floating-point number is accurate to
approximately 15 decimal places.

UNSIGNED, if specified, disallows negative values.

ZEROFILL, if specified, pads the number with zeros, up to the total number of
digits specified by M.

REAL and DOUBLE PRECISION are synonyms, unless the REAL_AS_FLOAT SQL mode is
enabled, in which case REAL is a synonym for FLOAT rather than DOUBLE.

See Floating Point Accuracy for issues when using floating-point numbers.

For more details on the attributes, see Numeric Data Type Overview.

Examples
--------

CREATE TABLE t1 (d DOUBLE(5,0) zerofill);

INSERT INTO t1 VALUES (1),(2),(3),(4);

SELECT * FROM t1;
+-------+
| d     |
+-------+
| 00001 |
| 00002 |
| 00003 |
| 00004 |
+-------+

URL: https://mariadb.com/kb/en/double/