mysql 数据类型 数值类型

1bit = 8位

数值类型

tinyint(1)和tinyint(3)在存储上并没有什么区别,他们在存储中都是占用1字节8位,
表示范围为:有符号数(-128~127),无符号数(0~255)。
区别在于:在创建类型时加入zerofill来用0填充,可以看出区别。
例如tinyint(3),当你存储时,MySQL会帮你补全,存储为011,而当大于等于3位时,则没有影响

mysql 数据类型 数值类型_第1张图片

和tinyint解释相似

float(3,2) 总共显示3位 2位小数

1、float的指数域是8位,可表达的范围为0~255,指数偏移量是127,指数值的范围为-127~128。小数域是23位

2、double的指数域是11位,可表达的范围为0~2047,指数指数偏移量是1023,指数值的范围为-1023~1024。小数域是52位

3、float可表示数的范围是-2^128~2^128,即-3.40E+38~ .40E+38。

4、double可表示数的范围是-2^1024~2^1024,即-1.79E^308~1.79E^308。

浮点型数据在存储的时候,必须转化成二进制,
float最大可存储32位,如果二进制32位之后都是0,那么数据就是准确的,否则数据就会有丢失。
double最大可存储64位,同上理。

如何选择float,double,decimal
1 如果你要表示的浮点型数据转成二进制之后能被32位float存储,或者可以容忍截断,则使用float,这个范围大概为要精确保存6位数字左右的浮点型数据 
比如10分制的店铺积分可以用float存储,小商品零售价格(1000块之内)

2 如果你要表示的浮点型数据转成二进制之后能被64位double存储,或者可以容忍截断,这个范围大致要精确到保存13位数字左右的浮点型数据 
比如汽车价格,几千万的工程造价

3 相比double,已经满足我们大部分浮点型数据的存储精度要求,如果还要精益求精,则使用decimal定点型存储 

 

你可能感兴趣的:(mysql)