本节讨论了该部分的特征小数
数据类型(及其同义词),特别考虑以下主题:
最大位数
存储格式
存储要求
的非标准MySQL扩展的上范围
小数
列
的声明语法小数
列是十进制(
。参数的值范围如下:m
那D.
)
m
是最大位数(精度)。取值范围是1 ~ 65。D.
是小数点右侧的数字数(比例)。它的范围为0到30,必须不大于m
。
如果D.
省略,默认为0。如果m
省略,默认为10。
最大取值为65m
意味着计算小数
值最多可准确到65位。这种精度65位的限制也适用于精确值数字文字,因此此类文字的最大范围与以前不同。(还有限制文本的时间小数
文字可以;看第12.25.3节,“表达式处理”.)
值小数
列使用二进制格式存储,该格式将9个十进制数字打包成4个字节。每个值的整数部分和小数部分的存储要求分别确定。9位数字的每个倍数需要4个字节,剩余的任何数字需要4个字节的一部分。剩余数字所需的存储空间如下表所示。
剩下的数字 | 字节数 |
---|---|
0. | 0. |
1-2 | 1 |
3 - 4 | 2 |
5 - 6 | 3. |
7-9 | 4. |
例如,一个小数(18、9)
列的小数点两边各有9位,因此整数部分和小数部分各需要4字节。一种十进制(20,6)
列有十四位数字和六位数。整数位需要四个字节为九位数和3个字节的剩余五位数字。六个小数位需要3个字节。
小数
列不存储前导+
字符或-
性格或领导0.
数字。如果你插入+ 0003.1
成一个十进制(5,1)
列,它存储为3.1
。对于负数,一个字面-
字符未存储。
小数
列不允许比列定义所暗示的范围大的值。例如,一个十进制(3,0)
列支持一系列-999年
至999
。一种十进制(
列允许m
那D.
)m
-D.
数字到小数点左侧。
SQL标准要求这种精度数字(
是完全m
那D.
)m
数字。为了十进制(
,标准至少需要精确度m
那D.
)m
数字但允许更多。在mysql,十进制(
和m
那D.
)数字(
是一样的,两者都有精确的精确度m
那D.
)m
数字。
完整解释内部格式小数
值,请参阅该文件字符串/ decimal.c
在MySQL源代码发行版中。控件中解释了该格式(用一个示例)decimal2bin ()
功能。