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个字段的含义如下: 查询 查询分为单列查询, 多 ...
随机推荐
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器版本打包方法介绍
EasyDSS流媒体解决方案是一套集流媒体点播.转码.管理.直播.录像.检索.时移回看于一体的一套完整的商用流媒体解决方案.EasyDSS软件以压缩包的形式提供给客户使用,同时支持Linux和 Win ...
- 使用自定义注解和AOP管理shiro权限
一.场景 在使用shiro框架的时候,遇到了这样的需求:本系统有多个用户,每个用户分配不同角色,每个角色的权限也不一致.比如A用户拥有新闻列表的增删改查权限,而B用户只有查看新闻列表的权限,而没有删除 ...
- 【SQL骚操作】SqlServer数据库表生成C# Model实体类SQL语句
已知现有表T1 想快速获取cs类结构 /// <summary> /// T1 /// </summary> public class T1 { /// <summary ...
- 【jquery】【jqGrid】设置不能多选
onSelectAll:function(rowids,statue){ layui.layer.msg("请选择单条记录"); $("#jqGrid").jq ...
- [转帖]50 亿美元!微软签下毕马威!JEDI 100 亿美元订单之后又一大单!
50 亿美元!微软签下毕马威!JEDI 100 亿美元订单之后又一大单! https://mp.weixin.qq.com/s/K0SrFNSVK5aOu6TIzhN92Q 前段时间,微软击败亚马逊, ...
- 【转帖】HBase基本概念与基本使用
HBase基本概念与基本使用 https://www.cnblogs.com/swordfall/p/8737328.html 分类: HBase undefined 1. HBase简介 1.1 什 ...
- Opencv之漫水填充效果
下面是opencv的漫水填充效果代码 这篇文章仅限个人的笔记 没有详细的注释 放代码 这是简单的示范 int main()//*******************简单的漫水填充算法实例 { Vide ...
- php mysql的储存过程 实现批量更新
UPDATE newhouse_clicks SET clicks = CASE id WHEN 1 THEN 1000 WHEN 2 THEN 2000 WHEN 3 THEN 3000 END W ...
- Python多进程方式抓取基金网站内容的方法分析
因为进程也不是越多越好,我们计划分3个进程执行.意思就是 :把总共要抓取的28页分成三部分. 怎么分呢? # 初始range r = range(1,29) # 步长 step = 10 myList ...
- setPos 详解
etWindowPos 详解 函数名: SetWindowPos 头文件: winuser.h 函数原型: BOOL SetWindowPos ( HWND hWnd, //窗口句柄 HWND h ...