### 12.25.2 十进制数据类型特征

本节讨论的特点[`十进制`](fixed-point-types.html)数据类型（及其同义词），尤其是以下主题：

-   最大位数

-   存储格式

-   存储要求

-   对上限范围的非标准 MySQL 扩展[`十进制`](fixed-point-types.html)列

    a 的声明语法[`十进制`](fixed-point-types.html)列是`十进制（*`米`*,*`D`*)`.参数的取值范围如下：

-   *`米`*是最大位数（精度）。它的范围是 1 到 65。

-   *`D`*是小数点右侧的位数（刻度）。它的范围为 0 到 30，并且不得大于*`米`*.

    如果*`D`*如果省略，则默认值为0。如果*`M`*省略，默认值为10。

    最大值为65*`M`*这意味着[`十进制的`](fixed-point-types.html)数值精确到65位。65位精度的限制也适用于精确值数字文字，因此此类文字的最大范围与以前不同。（对文本的长度也有限制。）[`十进制的`](fixed-point-types.html)文字可以是；看见[第12.25.3节“表达式处理”](precision-math-expressions.html).)

    价值观[`十进制的`](fixed-point-types.html)列使用二进制格式存储，该格式将9个十进制数字压缩为4个字节。每个值的整数部分和小数部分的存储要求分别确定。九位数的每一个倍数需要4个字节，剩余的任何数字都需要4字节的一小部分。下表给出了剩余数字所需的存储空间。

| 剩余数字 | 字节数 |
| ---- | --- |
| 0 | 0 |
| 1–2 | 1. |
| 3–4 | 2. |
| 5–6 | 3. |
| 7–9 | 4. |

例如，一个`十进制（18,9）`列的小数点两侧各有九位数字，因此整数部分和小数部分各需要4个字节。A.`十进制（20,6）`列有14个整数和6个小数。整数位数要求其中九位使用四个字节，其余五位使用三个字节。6个小数位数需要3个字节。

[`十进制的`](fixed-point-types.html)列不存储前导字符`+`性格还是`-`角色还是主角`0`数字。如果你插入`+0003.1`变成一个`十进制（5,1）`列，它存储为`3.1`.对于负数，一个字面值`-`字符不被存储。

[`十进制的`](fixed-point-types.html)列不允许值大于列定义所暗示的范围。例如，一个`十进制（3,0）`列支持一系列`-999`到`999`A.`小数点(*`M`*,*`D`*)`柱允许高达*`M`* - *`D`*小数点左边的数字。

SQL标准要求`数字的(*`M`*,*`D`*)`是*确切地* *`M`*数字。对于`小数点(*`M`*,*`D`*)`，该标准要求精度至少为*`M`*数字，但允许更多。在MySQL中，`小数点(*`M`*,*`D`*)`和`数字的(*`M`*,*`D`*)`都是一样的，两者的精度都是*`M`*数字。

完整解释`十进制的`值，请参阅该文件`字符串/小数。C`在MySQL源代码发行版中。该格式在`小数点2bin（）`作用
