项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

浮点数误差

浮点数一个普遍的问题就是在计算机的世界中,浮点数并不能准确地表示十进制。并且,即便是最简单的数学运算,也会带来不可控制的后果。因为,在计算机的世界中只认识0与1。

>>> x = 4.20
>>> y = 2.10
>>> x + y
6.3000000000000007
>>> (x+y) == 6.3
False
>>> x = 1.2
>>> y = 2.3
>>> x + y
3.5
>>> (x + y) == 3.5
True

上述种种问题,就来自于计算机的cpu与浮点数的表示方式,我们自己在代码层面是没法控制的。在有些需要精确表示浮点数的场合,例如财务结算,这些误差就不可接受。

decimal模块进行十进制数学计算

python中的decimal模块可以解决上面的烦恼
decimal模块中,可以通过整数,字符串或原则构建decimal.Decimal对象。如果是浮点数,特别注意因为浮点数本身存在误差,需要先将浮点数转化为字符串。

>>> from decimal import Decimal
>>> from decimal import getcontext
>>> Decimal('4.20') + Decimal('2.10')
Decimal('6.30')
>>> from decimal import Decimal
>>> from decimal import getcontext
>>> x = 4.20
>>> y = 2.10
>>> z = Decimal(str(x)) + Decimal(str(y))
>>> z
Decimal('6.3')
>>> getcontext().prec = 4 #设置精度
>>> Decimal('1.00') /Decimal('3.0')
Decimal('0.3333')

当然精度提升的同时,肯定带来的是性能的损失。在对数据要求特别精确的场合(例如财务结算),这些性能的损失是值得的。但是如果是大规模的科学计算,就需要考虑运行效率了。毕竟原生的float比Decimal对象肯定是要快很多的。

python 浮点数精确运算解决方案相关推荐

  1. 浮点数相加php,利用php怎么实现一个浮点数精确运算功能

    利用php怎么实现一个浮点数精确运算功能 发布时间:2020-12-15 16:06:03 来源:亿速云 阅读:94 作者:Leah 今天就跟大家聊聊有关利用php怎么实现一个浮点数精确运算功能,可能 ...

  2. python浮点数怎么运算_Python如何执行精确的浮点数运算

    问题 你需要对浮点数执行精确的计算操作,并且不希望有任何小误差的出现. 解决方案 浮点数的一个普遍问题是它们并不能精确的表示十进制数. 并且,即使是最简单的数学运算也会产生小的误差,比如: >& ...

  3. python浮点数怎么运算_Python 浮点数运算

    浮点数用来存储计算机中的小数,与现实世界中的十进制小数不同的是,浮点数通过二进制的形式来表示一个小数.在深入了解浮点数的实现之前,先来看几个 Python 浮点数计算有意思的例子: 0.1 == 0. ...

  4. c语言浮点数如何精确计算,浮点数精确运算的分析和解决办法

    1.01 + 2.01 = 3.02 2.01 * 2.01 = 4 0401   不知你注意没有,这个很寻常的等式,你如果将它放在C++中,Java中,Basic中,它 居然是不成立的.计算机在开玩 ...

  5. python浮点数怎么运算_为什么说浮点数缺乏精确性? python中浮点数运算问题

    我想从两个角度回答: 一:十进制小数转化成二进制小数的方法.(简单举例,看完就可以自己用笔进行运算.) 二:如何解决python中的浮点数运算问题. 关于一: 拿1.375这个十进制数举例,pytho ...

  6. python浮点数怎么运算_python中实现精确的浮点数运算详解

    为什么说浮点数缺乏精确性? 在开始本文之前,让我们先来谈谈浮点数为什么缺乏精确性的问题,其实这不是Python的问题,而是实数的无限精度跟计算机的有限内存之间的矛盾. 举个例子,假如说我只能使用整数( ...

  7. python浮点数精确计算 ,小数点精确计算问题

    1.浮点数计算出错 a=1.1 b=2.2 a+b 输出: 出现上面的情况,主要还是因浮点数在计算机中实际是以二进制保存的,有些数不精确. 比如说: 0.1是十进制,转化为二进制后它是个无限循环的数: ...

  8. php如何计算精确,简单谈谈php浮点数精确运算

    bc是Binary Calculator的缩写.bc*函数的参数都是操作数加上一个可选的 [int scale],比如string bcadd(string $left_operand, string ...

  9. Python 浮点数运算

    2019独角兽企业重金招聘Python工程师标准>>> 浮点数用来存储计算机中的小数,与现实世界中的十进制小数不同的是,浮点数通过二进制的形式来表示一个小数.在深入了解浮点数的实现之 ...

  10. python浮点数运算问题_python基础教程之. 浮点数运算:问题和局限

    14. 浮点数运算:问题和局限¶ 浮点数在计算机硬件中表示为以 2 为底(二进制)的小数.例如,十进制小数 0.125 是1/10 + 2/100 + 5/1000 的值,同样二进制小数 0.001 ...

最新文章

  1. 登录界面的滑动_电脑同时登录两个微信,原来这么简单?3步搞定!
  2. gamma分布 pytorch_Probability distributions - torch.distributions
  3. python怎么安装requests库-python怎么安装requests库
  4. 【Python】Cookie 和 Session
  5. iospython开发工具_使用Python开发iOS程序
  6. 【Notes8】Linux开发环境,Linux命令,vi命令,/正则,Hash,iNode,文件查找与读取,Linux开机自启动
  7. 为何程序员上班时间总戴个耳机,看完恍然大悟...
  8. Cmd Markdown 编辑阅读器
  9. Nat Biotechnol | 大神李恒团队开发不依赖于亲本的单倍型基因组组装工具hifiasm
  10. 设置jstree只展示到2级_你做的私域流量属于什么级别?80%的商家都还只在第2级...
  11. 杭电2897邂逅明下邂逅明下
  12. 推荐|风控教父新书来袭(含红宝书三本风控秘籍)
  13. 云服务器架设网站教程_阿里云服务器购买流程详细教程及注意事项
  14. 数据库修改服务器ip地址吗,服务器数据库与改ip地址吗
  15. Struts2之访问ServletAPI
  16. excel 查一列字符是否在另一列中出现
  17. Preview on Web Server 插件
  18. 最快倾斜摄影三维建模-台式、便携、多机集群配置推荐
  19. 共享单车调度_原来共享单车是这样调度的
  20. 简单总结里的结构化,成长型思维

热门文章

  1. 实例讲解遗传算法——基于遗传算法的自动组卷系统【实践篇】
  2. javascript DOM操作
  3. Instruments-Automation: 通过命令行执行测试用例
  4. Wingdings特殊字符及符号对照表
  5. TextMate里添加Theme
  6. myeclipse 创建和访问 servlet 项目
  7. 手动配置 hibernate 项目
  8. jQuery表单插件ajaxForm,ajaxSubmit使用详解
  9. 衔着树枝飞跃太平洋的傻鸟!(童话版)
  10. Android UI学习之---Button