当前位置: Oracle DBA培训网-优技培训 >> MySQL培训 > MySQL培训教程 >

MySQL基础知识:浮点数类型类型

MySQL基础知识:浮点数类型类型

MySQL基础知识:浮点数类型类型,MySQL支持所有的ANSI/ISO SQL92的浮点数字类型。这些类型包括准确数字的数据类型(NUMERIC, DECIMAL),也包括近似数字的数据类型(FLOAT, REAL,和DOUBLE PRECISION)。关键词DEC是DECIMAL一个同义词:

FLOAT[(M,D)] [ZEROFILL]

取值范围:-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38

存储要求:4个字节

DOUBLE[(M,D)] [ZEROFILL]、DOUBLE PRECISION[(M,D)] [ZEROFILL]

取值范围:-1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308

存储要求:8个字节

DECIMAL(M[,D]) [ZEROFILL]、NUMERIC(M[, D]) [ZEROFILL]

取值范围:实际的范围可以通过M和D的选择被限制

存储要求:M字节(低于3.23版本)M+2字节(3.23或更高版本)

NUMERIC和DECIMAL类型

表M和D对DECIMAL类型取值范围的影响

    

取值范围(MySQL < 3.23

取值范围(MySQL * 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

给定的 DECIMAL 类型的取值范围取决于MySQL 的版本。

对于 MySQL 3.23 以前的版本,DECIMAL(M, D) 列的每个值占用 M 字节,而符号(如果需要)和小数点包括在 M 字节中。因此,类型为 DECIMAL(5,2) 的列,其取值范围为 -9.99 到 99.99,因为它们覆盖了所有可能的 5 个字符的值。

对于MySQL 3.23,DECIMAL 值是根据 ANSI 规范进行处理的,ANSI 规范规定 DECIMAL(M, D) 必须能够表示 M 位数字及 D 位小数的任何值。例如,DECIMAL(5, 2) 必须能够表示从 -999.99 到 999.99 的所有值。而且必须存储符号和小数点,因此自 MySQL 3.23 以来 DECIMAL 值占 M + 2 个字节。对于 DECIMAL(5, 2),“最长”的值(-999.99)需要 7 个字节。在正取值范围的一端,不需要正号,因此 MySQL 利用它扩充了取值范围,使其超过了 ANSI 所规范所要求的取值范围。如 DECIMAL(5, 2) 的最大值为 9999.99,因为有 7 个字节可用。

简而言之,在MySQL 3.23 及以后的版本中,DECIMAL(M, D) 的取值范围等于更早版本中的 DECIMAL(M + 2, D) 的取值范围。

技术沙龙MORE+

标签错误:<!-- #Label# labelId=20160707140604 moduleId=1 classId=12231768634 orderby=2 fields=url,title,u_info attribute= datatypeId=22192428132 recordCount=3 pageSize= <htmlTemplate><dt><img src="/images/index_26${index}.jpg" width="100" height="62" /><a href="$url" title="${title}">${title}</a><span>${api.left(u_info,60)}</span></dt></htmlTemplate> -->
我要参加技术沙龙