# 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)
列支持一系列-999
到999
A.小数点(*
M*,*
D*)
柱允许高达*M
* - *D
*小数点左边的数字。
SQL标准要求数字的(*
M*,*
D*)
是确切地 *M
数字。对于小数点(*
M*,*
D*)
,该标准要求精度至少为M
数字,但允许更多。在MySQL中,小数点(*
M*,*
D*)
和数字的(*
M*,*
D*)
都是一样的,两者的精度都是M
*数字。
完整解释十进制的
值,请参阅该文件字符串/小数。C
在MySQL源代码发行版中。该格式在小数点2bin()
作用