本节讨论十进制
数据类型(及其同义词),具体涉及以下主题:
最大位数
存储格式
存储需求
非标准MySQL扩展到上限
十进制
列
声明语法的一个十进制
列是小数(
.参数的取值范围如下:米
,D
)
米
是最大位数(精度)。它的范围为1到65。D
是小数点(刻度)右边的位数。取值范围是0 ~ 30,不能大于米
.
如果D
省略,默认为0.如果米
省略,默认为10。
最大值为65米
意味着计算十进制
值的精确度可达65位。65位精度的限制也适用于精确数值字面量,因此这种字面量的最大范围与以前不同。(文本的长度也有限制十进制
文字是什么;看到第12.25.3节“表达处理”.)
价值十进制
使用二进制格式存储列,该格式将九个十进制数字包装成4个字节。每个值的整数和分数部分的存储要求是单独确定的。九位数的每个倍数需要4个字节,并且剩下的任何剩余数字都需要一些4个字节。剩余数字所需的存储由下表给出。
剩下的数字 | 的字节数 |
---|---|
0 | 0 |
1 - 2 | 1 |
3-4 | 2 |
5-6 | 3. |
7号到9号 | 4 |
例如,一个十进制(18,9)
列在小数点的两侧有九个数字,因此整数部分和分数部分每个都需要4个字节。一个小数(20,6)
列有14个整数和6个小数。整数位数的9位需要4字节,其余5位需要3字节。六个小数点需要3个字节。
十进制
列不存储领先+
性格或者-
字符或领导0
位数。如果你插入+0003.1.
进入A.小数(5、1)
列,则将其存储为3.1
.对于负数,是一个字面值-
字符不被存储。
十进制
列不允许值大于列定义所隐含的范围。例如,一个小数(0)
列支持的范围-999
来999
.一个小数(
列允许米
,D
)米
-D
小数点左边的数位。
SQL标准要求数字(
是确切地米
,D
)米
位数。为小数(
,标准要求精度至少为米
,D
)米
数字,但允许更多。在MySQL中,小数(
和米
,D
)数字(
是一样的,并且两者的精度都是精确的吗米
,D
)米
位数。
的内部格式的完整说明十进制
值,请参见文件strings / decimal.c.
在MySQL源分发中。该格式被解释(用示例)Decimal2bin()
函数。