技术开发 频道

MYSQL 数据类型存储-数值型

  4. 数值类型: DECIMAL(M,N) 或 DECIMAL(M)

  4.1 存储位计算

  最小分配4个字节空间,比如decimal(4,2),实际用两个字节就可以表示.但MYSQL在分配空间时还是用了4个字节.空闲部分用0填充

  DECIMAL(M,N),如果9

  (这里为什么要这样算,详见4.2中的实例解释)

  4.2 如何读取数据.

  4.2.1 读取步骤

  按照定义,从磁盘读出该DECEMAL字段的所有数据(N位)后:

  4.2.1.1 正数,带小数,DECIMAL(4,2)

  0)以1开头,如果定义为UNSIGNED,则都为1

  1)去掉第一位符号位,

  2)用小数将剩余的位数分开, 前面(M位)是整数部分,后面(N位)是小数部分

  (在这一步是怎么分M和N的,我们能根据字段的定义计算出来)

  3)去掉小数点后面(整个字节)为0的情况,

  4)将二进制转换成十进制,即可读出原值.

  (注意,小数的读取方法与整数的方法一样,按二进制向十进制转换即可)

  4.2.1.2 负数,带小数 DECIMAL(4,2)

  0)以0开头,

  1)去掉第一位符号位,

  2)剩余的数取反+1 ,

  3)用小数将剩余的位数分开, 前面(M位)是整数部分,后面(N位)是小数部分

  (在这一步是怎么分M和N的,我们能根据字段的定义计算出来)

  4)去掉小数点后面(整个字节)为0的情况,

  5)将二进制转换成十进制,即可读出原值.

  (注意,小数的读取方法与整数的方法一样,按二进制向十进制转换即可)

  4.2.1.3 正数,不带小数, DECIMAL(N)

  0)以1开头,如果定义为UNSIGNED,则都为1

  1)去掉第一位符号位,

  2)将剩余的数位直接按二进制向十进制转换即可

0
相关文章