小数类型
专门用来存储小数的
在mysql中将小数类型又分为两类:浮点型和定点型
浮点型
浮点型又称之为精度类型:是一种有可能丢失精度的数据类型,数据有可能不那么准确(尤其在超出范围的时候)
之所以能存储较大的数值(不精确),原因就是利用存储数据的位来存储指数
float
float又称之为单精度类型,系统提供四个字节来存储数据,但是能表示的数据范围比整形大的多,大概是10的38次方;只能保证大概7个左右的精度(如果数据在7位数以内,那么基本是准确的,但是如果超过7位数,哪儿买就是不准确的)
基本语法
float:表示不指定小数位的浮点数
float(M,D):表示一共存储M个有效数字,其中小数位占D位
例如float(10,2) 整数部分为8位,小数部分为2位
- 创建数据表保存浮点数
- 插入合理数据
注意:如果数据精度丢失,那么浮点型是按照四舍五入的方式进行计算 插入超出大小的数据
数据长度刚好满足条件,但是精度超出
说明用户不能插入数据直接超过指定的整数部分长度,但是如果是系统自动进位导致,系统可以承担
- 浮点数可以采用科学计算法来存储数据
浮点数的应用:通常是用来保存一些数量特别大,大到可以不用那么精确的数据。
double
double又称之双精度,系统用8个字节来存储数据,表示的范围更大,10的38次方,但是精度也只有15位左右
定点数
定点数,能够保证数据精确的小数(小数部分可能会不精确,超出长度会四舍五入),整数部分会一定精确
decimal
decimal定点数,系统自动根据存储的数据来分配存储空间,每大概9个数就会分配四个字节进行存储,同时小数和整数部分是分开的。
decimal(M,D):M表示总长度,最大值不能超过65,D代表小数部分长度,最长不能超过30
- 创建表:与浮点数对比
- 插入正常数据
- 插入最大数据(我们创建时已经设定了最大长度位10位,整数部分为8位)
- 插入最大数据,且让定点型的小数部分超过位数限制四舍五入后,整数部分进位超出限制,此时会报错!
定点数的应用:设计金额时使用较多的是定点数