官方文档

https://dev.mysql.com/doc/refman/8.0/en/floating-point-types.html
官方文档是这么说的:

11.1.4 Floating-Point Types (Approximate Value) - FLOAT, DOUBLE

The FLOAT and DOUBLE types represent approximate numeric data values. MySQL uses four bytes for single-precision values and eight bytes for double-precision values.

For FLOAT, the SQL standard permits an optional specification of the precision (but not the range of the exponent) in bits following the keyword FLOAT in parentheses; ; that is, FLOAT(p). MySQL also supports this optional precision specification, but the precision value in FLOAT(p) is used only to determine storage size. A precision from 0 to 23 results in a 4-byte single-precision FLOAT column. 翻译:精度从0到23的结果是一个4字节的单精度浮点列。(也就是说,即使你把类型定义为float(16,2),也不可能达到16位的精度,因为float是用32bit存储的,只能保证6~7位精度。) A precision from 24 to 53 results in an 8-byte double-precision DOUBLE column.

MySQL permits a nonstandard syntax: FLOAT(M,D) or REAL(M,D) or DOUBLE PRECISION(M,D). Here, (M,D) means than values can be stored with up to M digits in total, of which D digits may be after the decimal point. For example, a column defined as FLOAT(7,4) will look like -999.9999 when displayed. MySQL performs rounding when storing values, so if you insert 999.00009 into a FLOAT(7,4) column, the approximate result is 999.0001.

As of MySQL 8.0.17, the nonstandard FLOAT(M,D) and DOUBLE(M,D) syntax is deprecated and support for it will be removed in a future MySQL version.

Because floating-point values are approximate and not stored as exact values, attempts to treat them as exact in comparisons may lead to problems. They are also subject to platform or implementation dependencies. For more information, see Section B.4.4.8, “Problems with Floating-Point Values”

For maximum portability, code requiring storage of approximate numeric data values should use FLOAT or DOUBLE PRECISION with no specification of precision or number of digits.

翻译

11.1.4浮点类型(近似值)-浮点,双精度浮点

浮点和双精度类型表示近似的数值数据值。MySQL为单精度值使用4个字节,为双精度值使用8个字节。

对于FLOAT, SQL标准允许在圆括号中的关键字FLOAT之后指定以位为单位的精度(但不允许指定指数的范围);;也就是说,浮子§。MySQL也支持这个可选的精度规范,但是FLOAT§中的精度值只用于确定存储大小。精度从0到23的结果是一个4字节的单精度浮点列。精度从24到53将产生一个8字节的双精度双列。

MySQL允许非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。在这里,(M,D)表示可以存储最多M位的值,其中D位可能在小数点后面。例如,定义为FLOAT(7,4)的列在显示时看起来像-999.9999。MySQL在存储值时执行四舍五入,所以如果您将999.00009插入到浮点数(7,4)列中,近似结果是999.0001。

从MySQL 8.0.17开始,不支持非标准的FLOAT(M,D)和DOUBLE(M,D)语法,在未来的MySQL版本中将不再支持它。

因为浮点值是近似的,而不是作为精确值存储的,所以在比较中试图将它们作为精确值处理可能会导致问题。它们还依赖于平台或实现。有关更多信息,请参见B.4.4.8节,“浮点值的问题”

为了获得最大的可移植性,需要存储近似数值数据值的代码应该使用浮点或双精度,而不指定精度或数字。

关于MySQL使用Float存储时的精度问题相关推荐

  1. mysql数据库只存储时分秒,不存储含年月日

    需要在mysql数据库中新增加字段,只存储时分秒,而不存储年月日,那么可以使用time类型 ALTER TABLE telephone add winter_am_start time NOT NUL ...

  2. JPA mysql wildfly jboss 存储时乱码

    首先确保mysql的库,表创建时指定的字符集collation. 可以直接用命令行插入中文,看查询出来是不是中文. insert into live_main_sync (cn_name, creat ...

  3. mysql数据库只存储时分秒,不存储含年月日,以及只存储年月日

    一开始存在数据库的日期类型是timestamp类型,但是由于我现在只需要时分秒,所以将timestamp类型改为time类型,如图: 改成了time类型,前端传数据过来,不能像之前那样直接用Date接 ...

  4. mysql innodb文件存储_MySQL数据库和InnoDB存储引擎文件

    参数文件 当MySQL示例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等.在默认情况下,MySQL实例会按照一定 ...

  5. MySQL工作笔记-建表时为Float型数据确定精度,查询时精度显示,多列之和查询

    目录 建表时设置精度 查询时设置精度 查询多列之和 建表时设置精度 首先是建表时为float类型设置精度: SQL代码如下: CREATE TABLE `testtable` (`id` int(11 ...

  6. mysql的float取值范围_mysql float精度与范围总结 - numeric

    ...是ture,不适用范围:不适用于检测可为0的参数. is_numeric();--只适用于检测数字,但假如参数名不存在,会出错,因此不适合于第一层检测. 综合示例: 复制代码 代码如下: FLO ...

  7. mysql double 存储_关于MYSQL中FLOAT和DOUBLE类型的存储-阿里云开发者社区

    关于MYSQL中FLOAT和DOUBLE类型的存储 重庆八怪 2016-04-12 844浏览量 简介: 关于MYSQL中FLOAT和DOUBLE类型的存储 其实在单精度和双精度浮点类型存储中其存储方 ...

  8. 关于MYSQL中FLOAT和DOUBLE类型的存储

    关于MYSQL中FLOAT和DOUBLE类型的存储 其实在单精度和双精度浮点类型存储中其存储方式和C/C++一致准守IEEE标准他们都是浮点型的,所谓的浮点型,是小数点的位置可变,其能够表示的范围比定 ...

  9. 用 float 存储金额,老板说损失从工资里扣!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 本文来源: juejin.im/post/5c08db5ff265 ...

最新文章

  1. 美亚Kindle排名第一的Python 3入门书,火遍了整个编程圈
  2. mysql安装教程博音网_RTSP视频平台EasyNVR使用mysql数据源启动报错unknow drivermysql优化...
  3. 1.2安装配置VMwaer虚拟机
  4. 一步步编写操作系统 36 一级页表与虚拟地址1
  5. rxjs为什么用的人少_工伤为什么公司不怕打官司
  6. greenplum配置高可用_GREENPLUM介绍之数据库管理(七)- 配置数据库高可用性之master镜像 | 学步园...
  7. 微软“作死”Windows
  8. c语言文件操作rewand,C语言程序设计第章概述.ppt
  9. 代码运行:CornerNet源码
  10. unity3d如何有效地组织代码?
  11. 微信小程序订阅消息wx.requestSubscribeMessage使用要点和requestSubscribeMessage:can only be invoked by userTAPgestur
  12. java 庖丁解牛api_Java 微信支付 APIv3 平台证书的命令行下载工具
  13. 联想笔记本G400使用VS2013时,笔记本快捷键与软件快捷键冲突解决方案
  14. Warm-up pytorch代码
  15. NE5532DR IC OPAMP GP 2 CIRCUIT 8SOIC
  16. 电子制造业生产车间物料怎么管?方法有哪些
  17. cid unmatched [object Object] at view.umd.min.js:1 TypeError: Invalid attempt to destructure non-ite
  18. python编程实践(一):统计智联招聘数据
  19. 计算机网络-自顶向下方法-笔记【第2章-应用层】
  20. 港股开盘价是如何产生的

热门文章

  1. HDU - 4685 Prince and Princess(强连通缩点+二分图完备匹配)
  2. CodeForces - 1141D Colored Boots(暴力+水题)
  3. java groovyshell_在java中使用groovy怎么搞
  4. 安卓app 获取view的id_隐私保护问题不小 研究表示1325个安卓APP未经授权获取用户数据...
  5. java8新特性_乐字节-Java8新特性-函数式接口
  6. 逆向工程核心原理读书笔记-API钩取之隐藏进程(二)
  7. 【Boost】boost库中thread多线程详解9——thread_specific_ptr线程局部存储
  8. STL 之accumulate,adjacent_difference,inner_product,partial_sum
  9. 电信诈骗?一招让骗子血本无归!
  10. 单元测试源码分析之一创建mock对象