您的位置:首页 > 数据库 > MySQL

Mysql数据类型---DECIMAL

2017-09-07 00:17 323 查看
标签(空格分隔): 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 的区别

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

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

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

小结:

对于要求精确计算的数据可以乘以相应倍数然后将结果存储在 BIGINTEGER 里,这样可以同时避免浮点存储计算不精确和 DECIMAL 精确计算代价高的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: