# 12.25.2 十进制数据类型特征

本节讨论的特点十进制数据类型(及其同义词),尤其是以下主题:

  • 最大位数

  • 存储格式

  • 存储要求

  • 对上限范围的非标准 MySQL 扩展十进制

    a 的声明语法十进制列是十进制(**,*D*).参数的取值范围如下:

  • **是最大位数(精度)。它的范围是 1 到 65。

  • D是小数点右侧的位数(刻度)。它的范围为 0 到 30,并且不得大于.

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

    最大值为65*M*这意味着十进制的数值精确到65位。65位精度的限制也适用于精确值数字文字,因此此类文字的最大范围与以前不同。(对文本的长度也有限制。)十进制的文字可以是;看见第12.25.3节“表达式处理”.)

    价值观十进制的列使用二进制格式存储,该格式将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个字节。

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

十进制的列不允许值大于列定义所暗示的范围。例如,一个十进制(3,0)列支持一系列-999999A.小数点(*M*,*D*)柱允许高达*M* - *D*小数点左边的数字。

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

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