场景是这样的,开发中需要统计某个正整数A的平均值,数A是随时间变化的。这本来是一个很简单的问题,可以用一个值B来统计这个A的累积和,在用B除以统计次数就可以了。但是开始时不想另外搞一个值B。所以推了一个公式出来,设n为统计次数,f(n)为前n次的统计平均值,Xn为第n次统计时的A值,那么很容易就可以得到公式:f(n) = [(n-1)*f(n-1) + Xn]/n,这个看似没有任何问题吧,开始我也以为是,但是使用过程中发现算出的平均值随时间慢慢变的越来越小。时间长了之后发现这个不太对,想了想才明白了忽略了一个问题----精度丢失。
      f(n) = [(n-1)*f(n-1) + Xn]/n从纯数学角度看是没有任何问题的,问题在于此时f(n)是整数,所以每次计算f(n)时,如果(n-1)*f(n-1) + Xn除以n除不尽的话,就会把小数部分给丢掉,而只取整数部分(不是四舍五入),这样就会造成结果比实际值要小一点,在某一次计算时差别可能不大,但是当n很大的时候,每次丢掉的部分所产生的累积效应就不容忽视了,所以就出现了上面描述的计算出的平均值随时间慢慢变小的情况。
      最后,我还是采用了最简单的那个办法,用B值计算累计和在除以次数。当然使用浮点数来计算f(n)也可以避免这个问题(浮点数超过精度范围部分是四舍五入的)。

差之毫厘谬以千里----精度丢失引起的问题相关推荐

  1. Http接口请求Long类型数据JsonObject反解析精度丢失问题

    问题描述:前端解析Long类型精度丢失 前端 ajax 进行一个 Get请求,后台处理请求并返回application/json, 其中包含 Long类型的数据,前端解析呈现会有 精度丢失问题. 如图 ...

  2. java中double类型精度丢失问题及解决方法

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源: https://blog.csdn.net/yacolsp ...

  3. python精度丢失_JS大坑之19位数的Number型精度丢失问题详解_稚终_前端开发者

    More 本项目仅供爬取体验,每次访问都会实时爬取数据,所以数据返回速度会比较慢,实际操作应该是定时爬取数据然后将数据存进数据库,数据从数据库返回从而提高数据返回效率. 但项目很基础,可以作为以上各个 ...

  4. mysql修改时间精度_Mysql时间精度丢失问题

    这两天发现一个问题,在数据库中使用了DateTime(3)类型的字段,但是发现本地的ide中入库的数据,所有的毫秒数为000,只能精确到秒,但是dev环境的服务器却是可以精确到正常的毫秒数.由于代码包 ...

  5. 由parseInt 引发的问题---想到浮点运算精度丢失---看透js number 的 encoded

    如题 先陈述下问题背景 偶尔测测自己写的计算器,随便输入玩嘛,然后发生下面诡异的事情: 当我从一个 1 输入到十个 1 的时候,过程显示都是正确的,像这样: 继续输入一个 1 的时候,然后就这个样子了 ...

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

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

  7. js浮点数精度丢失问题及如何解决js中浮点数计算不精准

    js浮点数精度丢失问题及如何解决js中浮点数计算不精准 参考文章: (1)js浮点数精度丢失问题及如何解决js中浮点数计算不精准 (2)https://www.cnblogs.com/ranyonsu ...

  8. 浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源

    在知乎上上看到如下问题: 浮点数精度问题的前世今生? 1.该问题出现的原因 ? 2.为何其他编程语言,比如java中可能没有js那么明显 3.大家在项目中踩过浮点数精度的坑? 4.最后采用哪些方案规避 ...

  9. Java 避免精度丢失之BigDecimal 运算

    * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精确的浮点数运算,包括加减乘除和四舍五入 import java.math.BigDecimal; /** 计算工具类 */ pu ...

最新文章

  1. 2道面试题:输入URL按回车HTTP2
  2. 在jQuery中删除事件处理程序的最佳方法?
  3. CRM Fiori应用 Appointment的close date字段
  4. 2020各大网站rss订阅源地址_RSS订阅器inoreader一些使用心得
  5. iOS OC与JS交互(WebView监听事件)
  6. Spring MVC,Spring Boot文件上传
  7. 蜜雪冰城“骗局”:年赚8亿,竟不是靠卖奶茶?!
  8. linux uwsgi 非root,nginx – 只能用root运行uwsgi
  9. Java SE (5)之 线程使用
  10. python类的创建及调用_在创建Python类时调用类方法
  11. 文件同步备份工具—Second Copy
  12. CodeForces - 884B Japanese Crosswords Strike Back
  13. DKN: Deep Knowledge-Aware Network for News Recommendation
  14. vscode远程连接服务器失败的问题
  15. 智学.com查成绩 html,智学.com查分数
  16. 为什么我的公众号没有留言功能呢?
  17. 奥比中光深度相机ros2 humble版安装分享
  18. 聚类dbi指数_聚类中的性能度量
  19. 【ClickHouse SQL 极简教程】ClickHouse SQL之数据定义语言 DDL
  20. Java 读取txt文件并写入数据库

热门文章

  1. 班级计算机应用论坛研讨,关于班主任论坛发言稿
  2. MS08-067溢出漏洞详解
  3. MATLAB实现数字滤波器的直接设计
  4. C++之_In_和_out_
  5. frida hook实例
  6. 《炬丰科技-半导体工艺》EUV光刻中的随机效应
  7. 索尼相机照片误删,有什么办法可以恢复?
  8. rhel8 rhel-8.0-x86_64-dvd.iso
  9. 阿里Java编码手册实战详解-命名规范篇
  10. 静态编译goahead