Mysql数据类型---DECIMAL

 
标签(空格分隔): MYSQL


基本语法

MYSQL中,FLOAT,DOUBLE,DECIMAL 都可以存储小数,但是FLOAT/DOUBLE 存储的是近似值,对于money等对精度要求高的场合不适用。
DECIMAL 类型以字符串形式存储,支持精确的小数运算。
DECIMAL 同义词有 DEC,NUMERIC,FIXED.

DECIMAL字段的声明语法是

DECIMAL(M,D)

取值范围

类型说明MySQL < 3.23MySQL >=3.23
DECIMAL(4, 1)[ -9.9 , 99.9 ][ -999.9 , 9999.9]
DECIMAL(5,1)[ -99.9 , 999.9 ][ -9999.9 , 99999.9 ]
DECIMAL(6,1)[ -999.9 , 9999.9 ][ -99999.9 , 999999.9 ]
DECIMAL(6,2)[ -99.99 , 999.99 ][ -9999.99 , 99999.99 ]
DECIMAL(6,3)[ -9.999 , 99.999 ][ -999.999 , 9999.999 ]

小结:
1. M是数字的最大个数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254),M 的默认值是10。
2. D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。
3. 整数部分数字个数 负数为 M-D,正数为 M-D+1,因为正数不需要存储符号,所以多出一位
3. float占4个字节,double占8个字节,decimail(M,D)占M+2个字节。

DECIMAL 和 FLOAT 的区别

  1. DECIMAL支持精确计算,FLOAT支持浮点运算

  2. 因为 CPU 不支持对 DEClMAL 的直接计算,所以在 MySQL 5.0 以及更高版本中, MySQL 服务器自身实现了 DECIMAL 的高精度计算。相对而言, CPU 直接支持原生浮点计算,所 以浮点运算明显更快。

  3. 浮点类型在存储同样范围的值时,通常比 DECIMAL 使用更少的空间。 FLOAT 使用 4个字 节存储。 DOUBLE 占用8个字节。

    小结:
    对于要求精确计算的数据可以乘以相应倍数然后将结果存储在 BIGINTEGER 里,这样可以同时避免浮点存储计算不精确和 DECIMAL 精确计算代价高的问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值