mysql列类型二——小数类型(float,double,decimal)

小数类型

专门用来存储小数的

在Mysql中将小数类型又分为两类:浮点型和定点型

浮点型

浮点型又称之为精度类型:是一种有可能丢失精度的数据类型,数据有可能不那么准确(由其是在超出范围的时候)

浮点型之所以能够存储较大的数值(不精确),原因就是利用存储数据的位来存储指数

整型:所有位都为1

1

1

1

1

1

1

1

1

计算结果:10^8-1

浮点型:有部分用于存储数据,有部分用于存指数

1

1

1

1

1

1

1

1

前三位转换成十进制之后用作10的指数: 10^7 * 数据值

Float

Float又称之为单精度类型:系统提供4个字节用来存储数据,但是能表示的数据范围比整型大的多,大概是10^38;只能保证大概7个左右的精度(如果数据在7位数以内,那么基本是准确的,但是如果超过7位数,那么就是不准确的)

基本语法

Float:表示不指定小数位的浮点数

Float(M,D):表示一共存储M个有效数字,其中小数部分占D位

Float(10,2):整数部分为8位,小数部分为2位

1.创建一个表

2.存入合法数据

精度大概在7位左右

注意:如果数据精度丢失,那么浮点型是按照四舍五入的方式进行计算

3、 插入数据,超出大小

报 out of range错误:值超出列类型的范围

4、 数据长度刚好满足条件,但是会超出精度

说明:用户不能插入数据直接超过指定的整数部分长度,但是如果是系统自动进位导致,系统可以承担。

5、浮点数可以采用科学计数法来存储数据

9e5也就是9*10^5

Double

Double又称之为双精度:系统用8个字节来存储数据,表示的范围更大,10^308次方,但是精度也只有15位左右。

总结:

浮点数的应用:通常是用来保存一些数量特别大,大到可以不用那么精确的数据,如果要更精确的 往下看

定点数

Decimal定点数:系统自动根据存储的数据来分配存储空间,每大概9个数就会分配四个字节来进行存储,同时小数和整数部分是分开的。

定点数:能够保证数据精确的小数(小数部分可能不精确,超出长度会四舍五入),整数部分一定精确

Decimal(M,D):M表示总长度,最大值不能超过65,D代表小数部分长度,最长不能超过30。

1.创建表(与浮点数对比)

2、 插入正常数据

decimal精确 而float类型的列进位了

3.插入最大数据

decimal精确 而float类型的列进位了

4、 尝试定点数进行四舍五入

定点数如果整数超出长度会报错

定点数的应用:如果涉及到钱的时候有可能使用定点数 


猜你喜欢

转载自blog.csdn.net/JavaCoder_juejue/article/details/81913346