IEEE浮点表示不是MySQL独有的.它遵循所有地方使用的相同标准.
1)忽略长度说明符,那只是噪音.在MySQL中,确切有两种浮点数据类型:单精度(32位)和双精度(64位).
可选的长度说明符只是提供了另一种方式来指定DOUBLE.
alter table t add foo FLOAT(4), add bar FLOAT(40) ;
相当于
alter table t add foo FLOAT , add bar DOUBLE ;
2)1e38中的38是10的指数幂.
1.0 x 10^38
在不深入所有细节的情况下,浮点数本质上表示为
sign * mantissa * (radix ^ exponent)
例如,在base10中,我们可以通过以下方式表示值123.45:
+1 * 0.12345 * ( 10 ^ 3 )
或者,我们可以使用base2,并用2的幂表示一个值(0到1之间).
3)1e39(1.0 * 10 ^ 39)大于可以用IEEE单精度FLOAT表示的值的范围. (“可表示的最大IEEE 754浮点值是2 * 2 ^ ?23 * 2 ^ 27,大约是3.402×10 ^ 38.
双精度浮点支持更大范围的值,最大为10 ^ 308.
4)范围是最小值到最大值.对于DOUBLE,范围是-1 * 10 ^ 308到10 ^ 308.
精度基本上是可以表示的位数.对于单精度FLOAT,我们获得大约7个十进制数字的精度.对于DOUBLE,我们的精度约为15位十进制数字的两倍.
–
IEEE浮点并不是MySQL独有的.几乎所有现代处理器都包含浮点算术单元,它们对浮点数进行运算.
参考文献: