MySQL DataType--浮点数(Floating-Point Types)学习
浮点数(Floating-Point Types)
MySQL支持两种浮点数类型来表示近似值:
1、FLOAT,单精度浮点数,使用4字节存储,存储数据范围3.402823466E+38 - -1.175494351E-38,0,1.175494351E-38 - 3.402823466E+38
2、DOUBLE,双精度浮点数,使用8字节存储,存储数据范围-1.7976931348623157E+308 - -2.2250738585072014E-308,0,2.2250738585072014E-308 - 1.7976931348623157E+308
MySQL支持标准SQL语法FLOAT(P),P表示精度,当P在0-23范围时表示单精度浮点数(FLOAT),当P在24-53范围时表示双精度浮点数(DOUBLE)。
在MySQL 8.0前,MySQL支持非标准语法FLOAT(M,D)和DOUBLE(M,D),用于限制类型的存储范围,当并不影响其存储空间占用,但在MySQL 8.0开始标记弃用。
如FLOAT(5,2)限制存储数据范围在-999.99至999.99,使用4个字节空间。
浮点数(Approximate Value)
浮点数类型的实现目的是使用较小的存储空间来存放较大范围的数据。
MySQL使用4个字节32bytes来存放INT类型数据,单个byte能表示0和1两个值,能表示2的32次方个数值,使用一个byte表示正负关系,剩余31个bytes能表示2的31次方个数值,因此存储范围是-2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647)的所有整数数值。
MySQL中FLOAT的存储范围3.402823466E+38 - -1.175494351E-38,0,1.175494351E-38 - 3.402823466E+38,使用4个字节32bytes来存放,无法存储该范围内所有数值,只能存放该范围内部分点的数值。
浮点数数据分布情况:
1、越靠近零点处,数的分布越密集,能够表示的精度越高
2、越远离零点处,数的分布越稀疏,能够表示的范围约大

https://jingyan.baidu.com/article/64d05a022ea757de55f73b1d.html
FLOAT数据分布测试
CREATE TABLE TB1001(
ID INT PRIMARY KEY,
C1 FLOAT
); INSERT INTO TB1001(ID,C1)VALUES(1,274878000000);
INSERT INTO TB1001(ID,C1)VALUES(2,274877000000);
INSERT INTO TB1001(ID,C1)VALUES(3,274876000000);
INSERT INTO TB1001(ID,C1)VALUES(4,274876000000-1);
INSERT INTO TB1001(ID,C1)VALUES(5,274875000000); SELECT * FROM TB1001;
+----+--------------+
| ID | C1 |
+----+--------------+
| 1 | 274878000000 |
| 2 | 274877000000 |
| 3 | 274876000000 |
| 4 | 274876000000 |
| 5 | 274875000000 |
+----+--------------+
C1能存放274878000000的值,证明274876000000-1未达到其存储范围最大值,但插入过程中值274876000000-1被当做274876000000进行存储,由于274876000000离0点处太远,导致存储精度严重下降。
浮点数等值比较
由于浮点数存储的是近似值而非精确值,因此对浮点数做等值判断会存在问题,在MySQL中对浮点数做等于/不等于/大于等于/小于等于/GROUP BY等操作都会存在问题。
https://dev.mysql.com/doc/refman/8.0/en/problems-with-float.html
MySQL DataType--浮点数(Floating-Point Types)学习的更多相关文章
- What floating point types are available in .NET?
The C# standard only lists double and float as floating points available (those being the C# shortha ...
- mysql与sql server参照对比学习mysql
mysql与sql server参照对比学习mysql 关键词:mysql语法.mysql基础 转自桦仔系列:http://www.cnblogs.com/lyhabc/p/3691555.html ...
- MySQL DataType--定点数(Fixed-Point Types)学习
DECIMAL和NUMERIC MySQL支持两种定点数类型:DECIMAL和NUMERIC,而NUMERIC实现为DECIMAL,因此MySQL中DECIMAL和NUMERIC等价相同. 如使用下面 ...
- 《MySQL必知必会》学习笔记——第1章 了解SQL
第1章 了解SQL 本章将介绍数据库和SQL,它们是学习MySQL的先决条件. 1.1 数据库基础 你正在阅读本书,这表明你需要以某种方式与数据库打交道.在深入学习MySQL及其SQL语言的实现之前, ...
- MySQL分表(Partition)学习研究报告
最近在开发一个新的项目,可能会产生大数据量,需要对部分表进行分表操作,故来研究学习MySQL的分表功能. 由于实验报告已经写成Exlce文件了,各位看过就直接下载吧:MySQL分表分析报告.xls 以 ...
- MySQL使用详解--根据个人学习总结
1.安装配置 2.启动mysql服务并配置 mysql> \s(status也行) 查看当前服务器状态 查看编码状态 Server characterset : utf8 Db characte ...
- MySQL 体系结构以及各种文件类型学习汇总 (转)
1,mysql体系结构 由数据库和数据库实例组成,是单进场多线程架构. 数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件可以是frm.myd.myi.ibd等结尾的文件,当使用n ...
- 《mysql必知必会》学习_第八章_20180730_欢
第八章学习LIKE操作符,百分百(%)通配符,下划线(_)通配符 P47 select prod_id,prod_name from products where prod_name LIKE 'je ...
- MySQL的select(极客时间学习笔记)
查询语句 首先, 准备数据, 地址是: https://github.com/cystanford/sql_heros_data, 除了id以外, 24个字段的含义如下: 查询 查询分为单列查询, 多 ...
随机推荐
- JS 从整数里 随机选一个
比如:现有数字随机一个 num = 3)) // 现有数随机一个 randomNum 的值只会是 0 1 2 3 里的随机一个 如果想要从数组随机一个下标index 就不要+1 如: parseInt ...
- 【KakaJSON手册】08_其他用法
除了完成JSON和Model的转换之外,KakaJSON内部还有很多实用的功能,有些也开放为public接口了 遍历属性 struct Cat { var age: Int = 0 let name: ...
- Docker实践之04-操作容器
目录 一.查看容器列表 二.启动容器 三.终止容器 四.重启容器 五.后台运行容器 六.获取容器输出信息 七.进入容器 八.导出和导入容器 九.删除容器 一.查看容器列表 可以使用命令docker c ...
- 【Linux】修改root密码
sudo passwd root 然后提示输入两次新密码就可以了
- spring较为常用注解
@Configuration 从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被Annotat ...
- 【剑指offer】和为S的连续正数序列
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...
- Linux下将.Asp Core 部署到 Docker容器中
我们来部署一个简单的例子: 将一个简单的.Aps Core项目部署到Docker容器中并被外网访问 说明: 下面的步骤都是建立在宿主服务器系统已经安装配置过Docker容器,安装Docker相对比较简 ...
- SQL Server 中关于系统库Tempdb总结
Tempdb系统数据库是一个全局资源,可供连接到SQL Server实例的所有用户使用. 存储的内容项: 1.用户对象 用户对象由用户显示创建.这些对象可以位于用户会话的作用域中,也可以位于创建对象所 ...
- java网站架构演变过程
网站架构演变过程. .传统架构.传统的SSH架构,分为三层架构web控制层.业务逻辑层.数据库访问层..传统架构也就是单点应用,就是大家在刚开始初学JavaEE技术的时候SSH架构或者SSM架构,业务 ...
- golang http及其他标准库