论述:数值计算中的精度问题

更新历史
20190323:

  1. 首次发布

(1−10÷9)(1-10\div9)(1−10÷9)等于多少?

这个问题看上去很简单,我们可以很容易地得到:

1−10÷9=1−1.11˙=−0.11˙1-10\div9 = 1-1.1\dot1 = -0.1\dot1 1−10÷9=1−1.11˙=−0.11˙

可以看到,理论上的结果是一个无限循环的小数。
如果我们通过Python (博主采用的Python版本为:3.7.2)去计算上述的表达式,得到的结果是:

>>> 1-10/9
-0.11111111111111116

如果我们通过Matlab (博主采用的Matlab版本为:2017b)去计算上述的表达式,得到的结果则是:

-0.111111111111111

到此为止,机智的你一定发现了:

  • 用Python和Matlab计算出来的结果,小数部分的位数都是有限的
  • 用Python和Matlab计算出来的结果,小数部分的位数不一样
  • 用Python和Matlab计算出来的结果,对于常规数值计算的需求来说,精度都是远远足够的

将上述的发现概括、总结、升华一下,那就是:

  • 高精度的计算工具计算表达式(1−10÷9)(1-10\div9)(1−10÷9),得到的结果在精度上是有限但又满足需求的。

借此,我们可以很容易地想到:

  • 低精度的计算工具计算表达式(1−10÷9)(1-10\div9)(1−10÷9),得到的结果在精度上是有限的,结果的精度不一定满足需求。

是的,如果使用的计算工具的精度不够高,你可能会得到:

     1-10÷9 = 0
或者:  1-10÷9 = -0.1
或者:  1-10÷9 = -0.11
或者:  ...

以上的结果你能接受到什么程度,取决于你的计算需求。在硬件计算的领域,例如利用FPGA做卷积计算,使用的乘法器、加法器、乘加器等存在位宽的限制,往往就需要很小心地考虑数据的计算精度。

用一句话将本论述归纳总结一下,那就是:

  • 做数值计算时,需要关注精度问题

论述:数值计算中的精度问题相关推荐

  1. matlab在数值计算中的应用,详解MATLAB在科学计算中的应用

    详解MATLAB在科学计算中的应用 编辑 锁定 讨论 上传视频 <详解MATLAB在科学计算中的应用>是2011年电子工业出版社出版的图书,作者是陈泽占海明. 书    名 详解MATLA ...

  2. java类型精度排序,Java中BigDecimal精度和相等比较的坑

    为什么要有bigdecimal ,他是干什么的 float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计 ...

  3. 计算价格, java中浮点数精度丢失的解决方案

    计算价格, java中浮点数精度丢失的解决方案 转载于:https://www.cnblogs.com/gloryhope/p/9896719.html

  4. bigdecimal 和负数比较_Java中BigDecimal精度和相等比较的坑

    为什么要有BigDecimal ,他是干什么的 float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计 ...

  5. Python中浮点数精度处理

    from: Python中浮点数精度处理 Python中,浮点数运算,经常会碰到如下情况: 出现上面的情况,主要还是因浮点数在计算机中实际是以二进制保存的,有些数不精确. 比如说: 0.1是十进制,转 ...

  6. java 浮点数精度_Java中浮点数精度问题

    Java中浮点数精度问题 Java中的简单浮点数类型float和double不能够进行运算.不光是Java,在其它很多编程语言中也有这样的问题.如下图所示: public class DataRang ...

  7. 求qt如何解决小数计算过程中的精度丢失

    问题描述 在下面的例子中,变量a减去一个常量,本该值为0.90,但是通过程序得到a的值0.8999999999,例子如下: qreal a = 0.95; a = a - 0.05; 不光是做减法的时 ...

  8. 搜索和推荐中的精度和召回(recall)分别是什么意思?

    ●今日面试题分享 ● 搜索和推荐中的精度和召回(recall)分别是什么意思? 解析: 精度/精确率,和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量. 其中精度是检索出相关 ...

  9. 数值计算中的overflow and underflow

    数值计算中的overflow and underflow 以softmax为例 实数在计算机内用二进制标识,所以不是一个精确值,当数值过小的时候,被四舍五入为0,这就是下溢出,而指数函数容易出现无穷大 ...

  10. matlab在有限差分法中的应用,MATLAB在有限差分法数值计算中的应用

    第 卷 第 期 四川理工 学院学报 自然科学版仃 闷以 仃 从 年 月 文章编号 一 洲沁 一 在有限差分法数值计算中的应用 赵德奎 ' , 刘 勇 ' 四川理工 学院物理 系 , 四川 自贡 四川省 ...

最新文章

  1. Mars说光场(4)— 光场显示
  2. 利用注解 + 反射消除重复代码(Java项目)
  3. Hungarian method 匈牙利算法 解决指派问题
  4. 使用Windows Server2012或R2 DHCP故障转移群集需要注意的几点
  5. hihoCoder1228(2015北京网络赛B题)
  6. java设计高并发内存池_高并发服务器-连接池的设计
  7. jdk 9和jdk8_JDK 9是某些功能的终结
  8. Leetcode-45. 跳跃游戏Ⅱ
  9. ————————————————————————动态规划——————————————————————1003——————————...
  10. 8,888+ 字,彻底征服 Spring AOP!
  11. windows 快捷方式(.lnk)代码执行漏洞(CVE-2017-8464 )[附EXP生成工具]
  12. mysql 断开的管道_java.net.SocketException: 断开的管道 (Write failed) 错误,数据库隔一段时间就断开的问题...
  13. 主动微波遥感和被动微波遥感
  14. 微信openid你了解多少?appid,appsecert又是啥?
  15. 自盲化能力 Paillier和EIGamal
  16. 不用 IDE,仅用命令行 + SDK 开发 Android App
  17. 今日简报 每日精选12条新闻简报 每天一分钟 知晓天下事 4月23日
  18. xray 被动_google搜索爬取xray被动扫描
  19. Mapgis 到ArcGis 双向转换
  20. 模式窗口window.showModalDialog()的用法

热门文章

  1. js书写原生ajax,JS 原生ajax写法
  2. Unity3D C#之IL2CPP Windows端隐藏任务栏图标并添加至托盘
  3. 第九届蓝桥杯快速排序java
  4. 官网和网盘,VS2015安装详细教程(带图解+下载地址+超详细)
  5. 【编程须知】同样的代码linux与windows的运行结果不同
  6. 真-Windows用户名
  7. 一个链接搞定源码下载
  8. 单片机之汇编语言和C语言(以PIC单片机为例)
  9. PIC单片机入门教程(一)—— 准备工作
  10. 可控硅的基本工作原理及应用