小数类型
专门用来存储小数的
在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、 尝试定点数进行四舍五入
定点数如果整数超出长度也会报错
定点数的应用:如果涉及到钱的时候有可能使用定点数
相关文章
- mysql列类型二——小数类型(float,double,decimal)
- MySQL中Decimal类型和Float Double的区别 & BigDecimal与Double使用场景
- oracle 的 nubmer 类型与 C# 的 float double decimal 对应关系
- C# int uint long ulong byte sbyte float double decimal 范围,及类型!
- Sql的decimal、float、double类型的区别
- 数据库类型空间效率探索(五)- decimal/float/double/varchar
- mysql中decimal数据类型小数位填充问题详解
- 详细分析sqlserver中的小数类型(float和decimal)
- mysql float double 类型
- MySQL类型float double decimal的区别