本节讨论的特性小数
数据类型(及其同义词),特别是关于以下主题:
最大数字数
存储格式
存储需求
的上范围的非标准MySQL扩展
小数
列
的声明语法小数
列是小数(
.参数的取值范围如下:米
,D
)
米
是最大数字数(精度)。取值范围是1 ~ 65。D
是小数点(刻度)右边的位数。取值范围为0 ~ 30,且不能大于等于0米
.
如果D
省略,默认值为0。如果米
省略,默认值为10。
65的最大值米
意味着计算小数
数值精确到65位。65位的精度限制也适用于精确值的数字字面值,因此这种字面值的最大范围与以前不同。(文本的长度也有限制小数
文字是什么;看到第12.22.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)
列有14个整数和6个小数。整数数字中9位占用4个字节,其余5位占用3个字节。6个小数需要3个字节。
小数
列不存储前导+
字符或-
字符或领导0
位数。如果你插入+ 0003.1
成一个小数(5、1)
列,它被存储为3.1
.对于负数,是字面的-
字符不存储。
小数
列不允许值大于列定义所隐含的范围。例如,一个小数(0)
列支持范围-999年
来999
.一个小数(
列允许达到米
,D
)米
-D
小数点左边的数位
SQL标准要求的精度数字(
是完全米
,D
)米
位数。为小数(
,标准要求精度至少米
,D
)米
数字,但允许更多。在MySQL中,小数(
而且米
,D
)数字(
都是一样的,而且都有精确到米
,D
)米
位数。
的内部格式的完整解释小数
值,参见文件字符串/ decimal.c
在MySQL源码发行版中。格式解释(用一个示例)在decimal2bin ()
函数。