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) 的取值范围。
-
标签错误:<!-- #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>
-->
- 我要参加技术沙龙