MySQL 浮点数 的精度

面试官最爱问的坑:MySQL 中 FLOAT 和 DOUBLE 你真懂吗? 在 MySQL 面试中,“FLOAT 和 DOUBLE 有什么区别”常被问到。别小看这个问题,答得浅显容易被扣分。本文用故事+表格拆解存储空间、精度、范围和应用场景,还告诉你为什么货币数据一定要用 DECIMAL! 阅读详情

MySQL 浮点数 的精度

在 MySQL 中,float 表示单精度浮点数, double 表示双精度浮点数,decimal 表示定点数。定义 这些类型的数据时,同时需要指定其长度和精度 ,即用名称(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度。

如果 float 和 double 不指定精度,则按照实际的精度来显示, decimal 不指定时,默认为(10,2)。

这里,还有一个问题,对于 float 和 double,如果不指定精度,则不会存储小数点末尾的0,只有指定了具体的精度值,才会存储小数点末尾的0。

eg.

mysql> create table test2(f1 float, f2 float(5,2), f3 double, f4 double(10,2));
Query OK, 0 rows affected (0.10 sec)

mysql> insert into test2 values(12.30, 12.30, 12.30, 12.30);
Query OK, 1 row affected (0.10 sec)

mysql> select * from test2;
+------+-------+------+-------+
| f1   | f2    | f3   | f4    |
+------+-------+------+-------+
| 12.3 | 12.30 | 12.3 | 12.30 |
+------+-------+------+-------+
1 row in set (0.00 sec)

mysql> insert into test2 values(12.300, 12.300, 12.300, 12.300);
Query OK, 1 row affected (0.05 sec)

mysql> select * from test2;
+------+-------+------+-------+
| f1   | f2    | f3   | f4    |
+------+-------+------+-------+
| 12.3 | 12.30 | 12.3 | 12.30 |
| 12.3 | 12.30 | 12.3 | 12.30 |
+------+-------+------+-------+
2 rows in set (0.00 sec)

mysql> insert into test2 values(12.305, 12.305, 12.305, 12.305);
Query OK, 1 row affected (0.07 sec)

mysql> select * from test2;
+--------+-------+--------+-------+
| f1     | f2    | f3     | f4    |
+--------+-------+--------+-------+
|   12.3 | 12.30 |   12.3 | 12.30 |
|   12.3 | 12.30 |   12.3 | 12.30 |
| 12.305 | 12.30 | 12.305 | 12.30 |
+--------+-------+--------+-------+
3 rows in set (0.00 sec)

所以,要想保留小数点末尾的0,则必须对 float 或 double 指定精度值。

MySQL 系列:

1. MySQL 常用 SQL 命令(1. DDL语句)

2. MySQL 常用 SQL 命令(2. DML语句)

3. MySQL 常用函数

4. MySQL 浮点数精度

更多文章

震惊!0.1+0.2≠0.3?MySQL浮点数的那些坑,你踩过几个? MySQL浮点数精度陷阱解析 文章揭示了MySQL中浮点数精度问题的本质,指出计算机二进制存储机制导致小数精度截断是根本原因。通过对比实验展示了FLOAT、DOUBLE和DECIMAL三种数据类型在实际应用中的精度差异,并分析了浮点数误差在不同运算场景中的表现特点。重点介绍了工业应用中必须使用浮点数的五大场景:科学计算、传感器网络、地理空间计算、游戏引擎和机器学习,其中DOUBLE类型在高精度需求领域占据主导地位。文中还提供了各类应用场景下的数据类型选择建议表,帮助开发者在精度与性能之间做出权衡决策。 阅读详情

相关推荐

MySQL中的Double类型填写什么?

根据你的需求,你可以使用不同的方式填写Double类型的值,并且可以在查询中使用这些值进行计算和比较。记住要注意范围和精度,以确保你的数据存储和计算的准确性。需要注意的是,当使用Double类型时,你应该遵循数据类型的范围和精度。Double类型可以存储非常大或非常小的数值,但它可能会引入一些精度问题。如果你需要更高的精度,可以考虑使用Decimal类型。它可以存储非常大或非常小的数字,并且具有高度的精度。当你需要处理带有小数部分的数值时,Double类型是一个很好的选择。

HackMasterX的博客 1008

mysql:列类型之float、double

环境: window10 vs2022 .net 6 mysql 8.0.25 DBeaver 参考: 《MSDN:浮点数值类型(C# 引用)》 《mysql:11.1.4 Floating-Point Types (Approximate Value) - FLOAT, DOUBLE》 1. float和double类型 在mysql中,float和double都是浮点数类型: float 占4个字节,精度是6位; double 占8个字节,精度是16位; 它们的性质和c#中浮点数的性质是一样

火焰 1万+

脑影像分析软件推荐 | JuSpace

JuSpace是一种允许基于 MRI 测量与核成像衍生估计的跨模态关联的工具包,它涵盖各种神经递质系统,包括多巴胺能、血清素能、去甲肾上腺素能和 GABA(γ-氨基丁酸) 神经传递。JuSpace 由一组 Matlab 功能以及涵盖各种受体系统的 PET 受体图谱组成。

NHKJ_ZF的博客 1707

MySQL中float、double、decimal三个浮点类型的区别与总结

double: 因为小数位精度高的缘故,所以双精度用来进行高速数学计算、科学计算、卫星定位计算等处理器上双精度型实际上比单精度的快, 所以: 当你需要保持多次反复迭代的计算精确性时,或在操作值很大的数字时,双精度型是最好的选择。2、字段decimal(20,6),20-6=14,其中小数部分为6,就对应上表中的3个字节,而整数部分为14,14-9=5,就是4个字节再加上表中的3个字节。在存储同样范围的值时,通常比decimal使用更少的空间,float使用4个字节存储,double使用8个字节 ,

迪之的博客 1万+

手把手教你用Nangate 45nm开源工艺库搞定数字电路仿真(附FreePDK资源)

本文详细介绍了如何使用Nangate 45nm开源工艺库进行数字电路仿真,包括环境搭建、关键文件解析、仿真环境配置及低功耗设计等实战内容。特别推荐FreePDK资源,帮助读者快速掌握从理论到实践的全流程操作,适用于学术研究和小规模数字电路设计。

weixin_30352645的博客 487

【提示学习代码】CoOp代码详读

CoOp是对CLIP的改进工作,主要是对prompt进行学习从而不用来手动设置prompt。自定义CLIP模型:上述两个模块结合而成的CLIP。文本编码器,接收文本的输入,并输出相应的编码表示。将图像和文本进行编码并计算它们之间的相似性。permute后变成了(4,2,3)Prompt学习器,用于学习生成提示。

weixin_51293984的博客 5816

MySQL中float、double、decimal三个浮点类型的区别与总结!

那么多浮点用哪个?

极客小俊 1万+

RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络

本文记录的是利用颈部结构优化RT-DETR的目标检测网络模型。利用改进后的颈部网络,通过跳层连接,避免了在进行反向传播时的梯度消失问题,并且引入跨尺度连接,可以实现不同级别和层次的特征充分融合,获取足够的高层语义信息和低层空间信息交换,从而在大规模变化场景下提高检测性能。GIRAFFEDET: A HEAVY-NECK PARADIGM FOR OBJECT DETECTION-GFPN包含了上述的跳层连接(dense-link和log2nlog _{2} nlog2​n-link)以及跨尺度连接(Quee

Limiiiing的博客 2228

mysql orm float_python – 具有MySQL和SQLAlchemy ORM的高数值精度浮点数

我使用SQLAlchemy的ORM在MySQL中存储了一些数字.当我之后获取它们时,它们被截断,只保留6个有效数字,因此在我的浮点数上失去了很多精度.我想有一个简单的方法可以解决这个问题,但我找不到如何.例如,以下代码:import sqlalchemy as safrom sqlalchemy.pool import QueuePoolimport sqlalchemy.ext.declarat...

weixin_42395823的博客 270

30. 用GPT-4自动生成测试用例的完整流程

利用GPT - 4生成测试用例面临的主要问题包括:如何准确地将软件需求转化为GPT - 4能够理解的输入提示,以确保生成的测试用例覆盖所有关键功能;如何评估生成的测试用例的有效性和充分性;如何处理生成的测试用例中的错误或不合理之处;以及如何将生成的测试用例集成到现有的测试框架中。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 472

第1章 大数据概述

三次信息化浪潮 信息化浪潮 发生时间 标志 解决的问题 代表企业 第一次 1980年前后 个人计算机 信息处理 Intel、AMD、IBM、苹果、微软、联想、戴尔、惠普等 第二次 1995年前后 互联网 信息传输

wyz191的专栏 7088

【MySQL】浮点数精度问题

不要盲目的说float和double精度可能发生丢失,而是说在存取时因为精度不一致会发生丢失,当然这里的丢失指的是扩展或者截断了,丢失了原有的精度。decimal是好,但不是说不会发生任何精度丢失。如果问题看得不深入,总会以偏概全。 我们知道,mysql存储小数可以使用float、double、decimal等。这些类型存储的小数精度都比较高。我们平时应用最多的就是两位小数点,所以,这些类型都是可以满足的。 那么数据精度丢失是如何表现的呢?到底是什么原因呢? 当我们不知道原因的时候,总会认为到处都是问题,找

weixin_45729934的博客 5472

LPDDR5 学习笔记05:WCK操作详解

LPDDR5 SDRAM采用双时钟设计,写时钟(WCK)频率为命令时钟(CK)的2倍或4倍,需要通过WCK2CK同步机制解决时钟域对齐问题。该同步操作由带特殊标志位的CAS命令触发,控制器需提供半频WCK脉冲进行状态校准。同步完成后才能执行读写操作,且支持多存储体组同步和WCK常开模式以优化性能。掉电后必须重新执行同步流程,确保时钟域正确对齐。该机制有效解决了高速内存接口的时序挑战,为LPDDR5性能提升提供关键技术支撑。

一只豌豆象的博客 2005

MySQL 也有精确精度的浮点数 ( 上 )

作者简介:大家好,我是码炫码哥,前中兴通讯、美团架构师,现任某互联网公司CTO,兼职码炫课堂主讲源码系列专题代表作:《jdk源码&多线程&高并发》,《深入tomcat源码解析》,《深入netty源码解析》,《深入dubbo源码解析》,《深入springboot源码解析》,《深入spring源码解析》,《深入redis源码解析》等联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬。

smart_an的专栏 948

YOLOv11改进策略【损失函数篇】| 将激活函数替换为带有注意力机制的激活函数 ARelu

将ELSA中的函数Φ\PhiΦ用具有可学习参数α\alphaα和β\betaβ的网络层表示为LxiαβCαxixi0σβxixi≥0Lxi​αβCαxi​σβxi​​xi​0xi​≥0​,结合标准的Rectified Linear UnitsRxi0xi0xixi≥0Rxi​0xi​​xi​0xi​≥0​,得到可学习激活函数Fxiα。

Limiiiing的博客 2117

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

mysql浮点数 谁偷走了你的精度_代码之谜(五)- 浮点数(谁偷了你的精度?)...

如果我告诉你,中关村配置最高的电子计算机的计算精度还不如一个便利店卖的手持计算器,你一定会反驳我:「今天写博客之前又忘记吃药了吧」。你可以用最主流的编程语言计算0.2 + 0.4,如果你使用的是 Chrome、FireFox、IE 8+,可以按 F12 键,然后找到 「控制台」,输入上面的表达式0.2 + 0.4,回车。然后再用最简陋的计算器(如果你没有手持计算器没关系,手机、电脑都自带一个...

weixin_32815027的博客 154

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

php mysql浮点数_PHP浮点数精度问题汇总

一、PHP浮点数精度损失问题先看下面这段代码:复制代码 代码如下:$f = 0.57;echo intval($f * 100); //56结果可能有点出乎你的意外,PHP遵循IEEE 754双精度:浮点数, 以64位的双精度, 采用1位符号位(E), 11指数位(Q), 52位尾数(M)表示(一共64位).符号位:最高位表示数据的正负,0表示正数,1表示负数。指数位:表示数据以2为底的幂,指数采...

weixin_39908070的博客 253

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

MYSQL浮点数float精度问题

遇到mysql设计的是6位float数经纬度,赋值的时候,明明是准去的数据insert进去,但是却发现,数据自动变了,精度明显丢失。查看官方文档才发现 https://dev.mysql.com/doc/refman/5.7/en/problems-with-float.html 确实是有问题,但是mysql已经有另外的方式解决了这个问题,那就是decimal Floating-

圆蟀的专栏 1433

mysql浮点数 谁偷走了你的精度_[转载]代码之谜(五)- 浮点数(谁偷了你的精度?)...

挺有意思的文章,以前也在思考过这个问题,不过没有达到这个深度。原文链接:http://hp.dewen.io/?p=2024如果我告诉你,中关村配置最高的电子计算机的计算精度还不如一个便利店卖的手持计算器,你一定会反驳我:「今天写博客之前又忘记吃药了吧」。你可以用最主流的编程语言计算0.2 + 0.4,如果你使用的是 Chrome、FireFox、IE 8+,可以按 F12 键,然后找到 「控制...

weixin_31107269的博客 183

mysql 取 浮点运算_MySQL 也有精确精度的浮点数 ( 上 )

MySQL 支持 SQL 标准中提到的所有数值数据类型,这些类型包括精确的数值数据类型,例如 INTEGER、SMALLINT、DECIMAL 和 NUMERIC,也包括一些 近似 数值数据类型,例如 FLOAT、REAL 和 DOUBLE PRECISION 双精度浮点数。在 MySQL 中,关键字 INT 是 INTEGER 的同义词,而 DEC 和 FIXED 是 DECIMAL 的同义词。...

weixin_33925615的博客 1136

浮点数精度控制方式总结(含mysql和java)

我们应该经常会遇到浮点数的计算或者控制浮点数小数位数,这里将工作中有可能会用到的一些控制浮点数精度的方法做出总结: A.Mysql中的函数 format format()函数会对小数部分超过指定位四舍五入,整数部分从右向左每3位一个逗号进行格式化输出 truncate(x,d) 整数位没有逗号分隔,小数位超过指定位直接舍去,不四舍五入 convert(expr,type); c

sinat_28771747的博客 1889

为什么MySQL的浮点数类型不够精准?(实例证明)

MySQL浮点数类型不精准,因此,在一些对精确度要求较高的项目中,不要使用浮点数。为什么不精确呢?下面通过一个简单的实例来分析。1、创建一个表,指定price字段为DOUBLE浮点数类型 2、插入两条数据 3、查看数据,并把两个商品价格相加 实际结果为:1.0999999999999999' 当我们需要以通过数值对比为条件进行查询,一旦出现误差,就查不出需要的结果了: 4、为什么会出现这种情况?我们分析下MySQL对浮点类型数据的存储方式。FLOAT(4字节)和DOUBLE(8字节)都

魏波 2225

MySQL浮点数和Java中浮点数比较

主要采用double(M,D)和decimal(M,D)两种。不显式指定长度和小数位数时,double默认double(0,0),decimal(10,0)。底层double是浮点数,decimal底层是字符串存储。double不能精确存储对应值,只能取设置精度后截断方式不同,double是五舍六入,decimal是四舍五入。列num设置double(0,0) 值12.12和3.03。列num设置decimal(10,2)得到15.15列num设置decimal(10,3)得到15.150。

qq_42936379的博客 282

MySQL变量的浮点数问题处理

然而,由于浮点数的存储方式,它们可能会导致一些精度问题。对于小数值,请考虑使用DECIMAL或NUMERIC类型,而不是FLOAT或DOUBLE类型。:如果可能的话,可以使用整数类型来存储数值,从而避免浮点数精度问题。例如,可以将货币值乘以100,然后将其存储为整数。:在处理浮点数值时,请确保检查数值的精度。如果精度不符合要求,可能需要采取其他措施,例如使用定点数或字符串类型。:如果数值精度非常重要,可以将数值转换为字符串类型进行存储。避免进行不必要的计算:在查询中,应尽量避免对浮点数进行不必要的计算。

2301_80388658的博客 652

mysql double(11)_十一、MySQL 也有精确精度的浮点数 ( 上 )

MySQL 支持 SQL 标准中提到的所有数值数据类型,这些类型包括精确的数值数据类型,例如 INTEGER、SMALLINT、DECIMAL 和 NUMERIC,也包括一些 近似 数值数据类型,例如 FLOAT、REAL 和 DOUBLE PRECISION 双精度浮点数。在 MySQL 中,关键字 INT 是 INTEGER 的同义词,而 DEC 和 FIXED 是 DECIMAL 的同义词。...

weixin_36053398的博客 1224

[Mysql] 整数与浮点数精度处理函数

本文主要讲解TRUNCATE函数、ROUND函数、CEIL函数、FLOOR函数

Hudas的博客 927
上一篇: Spring Boot 学习笔记
下一篇: Java 常用 Json 解析框架
杨小熊的笔记
博客等级 码龄15年 125粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值