最近在整理关于MYSQL预定义词的笔记,然后发现了一个经常被提到的问题,float的精准度。
在MYSQL的官方文档里,有这样一个例子:
select (.1+.2)=.3
=> 1
但是
select (.1e0 + 0.2e0) = .3e0
=> 0
在自己的mysql上试了一下,果然如此,这是为什么呢,于是我试了一下
select .1e0 + 0.2e0
=> 0.30000000000000004
根据浮点数的表达规则 长度float=S+E+M=1+8+23=32, double=1+11+52=64
(S: 区分正【0】负【1】数, E:10的几次幂,M:数值)
计算方法参考=>here
因为select 1.e0 + 0.2e0中定义了E=0,所以,
在float格式下:
0.1 的M部分是 0.0001 1001 1001 1001 1001 100
0.2 的M部分是 0.0011 0011 0011 0011 0011 001
相加的结果是 0.0100 1100 1100 1100 1100 101
0.3 的M部分是 0.0100 1100 1100 1100 1100 110
而在不定义E的情况下,根据这个里面的解说:
0.1 的S = 0
小数部分是:0.0001 1001 1001 ....
也就是:1.1001 1001... * 10-4
而根据第一位必须是1的原理,M中不存储第一个1
M的值是:1001 1001 1001 1001 1001 100
所以,最后还原出:
0.1 = 0.0001 1001 1001 1001 1001 1001 100
0.2 = 0.0011 0011 0011 0011 0011 0011 00
相加 = 0.0100 1100 1100 1100 1100 1100 100
03 = 0.0100 1100 1100 1100 1100 1100 1 ( = 0.1 + 0.2)
分享到:
相关推荐
在金融交易领域,MetaTrader 5(MT5)是一个广泛使用的交易平台,它为交易者提供了进行外汇、期货、股票和其他金融市场交易的能力。...通过深入理解和应用这个脚本,交易者可以提升交易决策的精准度和速度。
通过深入理解这一脚本的工作原理和应用,交易者可以更好地利用其优势,制定出更为精准的交易策略。在实际操作中,交易者还需要结合其他技术分析工具和基本面信息,以全面评估市场状况,做出明智的交易决策。
总的来说,"Float - MetaTrader 4 脚本.zip"提供的FLOATqData_2.mq4脚本是MT4平台上的一种技术分析工具,它专注于浮动数据的解析和可视化,可以帮助交易者在外汇市场中进行更精准的决策。通过深入理解和应用这个脚本...
MetaTrader 5(MT5)作为一款广泛使用的交易平台,为交易者提供了丰富的自定义指标和脚本,以帮助他们进行更精准的分析。"Float_Pivot_Smoothed_Digit"便是其中之一,它是一款基于浮动枢轴点(Pivot Points)的平滑...
在IT领域,精准计算往往是至关重要的,特别是在科学计算、金融分析以及工程应用等场景。"Basic Big Float Module"正是一款为实现高精度浮点运算而设计的开源模块,专为BCB(Borland C++ Builder)和MSVC(Microsoft ...
在实际开发中,我们常常会遇到需要精准控制元素位置的场景,例如创建导航栏、控制弹出层的位置等。在这种情况下,position属性提供了一种更为灵活的定位方式,可以用来替代部分float属性的使用。 在CSS中,position...
C#开发电源电压电流监控软件,含STM32下位机源码:串口通信与动态图表显示,C#开发电源电压电流监控软件,结合STM32下位机源码:自动获取串口数据,双坐标轴动态显示电压电流,高效数据处理线程,精准控制。...
有效的进度管理能确保项目按时完成,依赖关系的识别和处理能保证任务按顺序进行,成本估算能控制预算,而风险管理则有助于降低潜在问题对项目的影响。通过对课后习题的解答,学生能深入理解这些理论知识,并将其应用...
**正文** 《Kalman滤波在C语言中的实现与应用》 卡尔曼滤波(Kalman Filter)是一种广泛...理解其工作原理并结合实际硬件环境,我们可以创建一个高效且适应性强的滤波解决方案,为嵌入式系统提供精准的数据处理能力。
标题与描述均提到了"C语言的PID算法",这表明文章的核心内容是关于如何在C语言环境下实现PID(比例积分微分)控制算法。PID控制是一种闭环反馈控制系统中常用的控制算法,广泛应用于工业自动化、机器人控制、过程...
在大多数情况下,冲突的原因是因为CSS样式没有精准定位到对应的元素,使用了全局的样式定义,导致所有使用了这个类的元素都受到样式影响。解决这类问题的关键在于对页面内各个元素进行精确定位,并对相关元素应用...
9. **PERT**:Program Evaluation and Review Technique(计划评审技术)用于估算不确定性的项目活动,总浮动时间(Total float)可决定进度的灵活性。 10. **功能点**:功能点(A选项)是一种软件规模度量方法,...
接下来,文章提到了BOOL、int、float和指针变量与“零值”比较的面试问题。对于BOOL型,正确判断非零状态应使用`if(!var)`;对于int型,使用`if(var==0)`更为明确;而对于指针,使用`if(var==NULL)`是标准做法。在...
### PID算法原理、调试经验及代码详解 #### 一、PID控制原理 PID(Proportional Integral Derivative)控制是一种闭环反馈控制策略,广泛应用于工业自动化...此外,根据实际情况调整PID参数,是实现精准控制的关键。
高德地图定位服务在稳定性与准确性方面得到了广泛认可,特别适合用于需要精准定位的应用场景。 两者之间的比较,高德地图在定位服务上可能表现出更高的稳定性和准确性。这可能得益于高德对地图数据的持续更新,以及...
然而,当我们处理包含大数字的对象时,可能会遇到数字精确度丢失的问题。这个问题主要体现在两个方面:一是超过15位数字的整数会出现精度丢失,二是特别大的数字会以科学记数法的形式展示,导致原始数值无法准确呈现...
此外,batchnorm也会受到影响,小batch下的均值和方差肯定不如大batch的精准,可以调整BN中的momentum参数解决。 二、梯度检查点(Gradient Checkpointing) 梯度检查点是一种以时间换空间的方法,通过减少保存的...
根据给定的信息,本文将详细解释“增量式温控PID”的核心概念、工作原理以及其实现方式。 ### 增量式温控PID概述 PID控制器(Proportional ...对于需要精准温度控制的应用场景,增量式温控PID无疑是一个理想的选择。
通过逐步调整比例系数Kp、积分时间Ti和微分时间Td,可以有效地改善系统的响应速度和稳定性,从而实现更加精准的转弯控制。此外,通过具体的代码实现案例,可以帮助开发人员更好地理解和应用PID算法,提高实际项目中...
相似人群分析在精准营销,推荐系统中的需求很多。 人的属性可以使用向量来表达,每个值代表一个属性的权重值,通过向量相似,可以得到一群相似的人群。 例如 create table tt ( uid int8 primary key, att1 float4, ...