需要对浮点数执行精确的计算操作,并且不希望有任何小误差的出现.

浮点数的一个普遍问题是它们并不能精确的表示十进制数。并且,即使是最简单的
数学运算也会产生小的误差,比如:

>>> a = 4.2
>>> b = 2.1
>>> a + b
6.300000000000001
>>> (a + b) == 6.3
False

”False“是由于底层CPU和IEEE标准通过自己的浮点单位去执行算术导致的。Python的浮点数据类型使用底层表示存储数据,所以无法无法避免这样的误差。

如果想更加精确(代价是性能损耗),可以使用decimal模块

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> from decimal import Decimal
>>> a = Decimal('4.2')
>>> b = Decimal('2.1')
>>> a + b
Decimal('6.3')
>>> print(a + b)
6.3
>>> (a + b) == Decimal('6.3')
True

上面真是乖乖的,用字符串表示数据。。。

然而Decimal对象支持所有的常用数学运算。

真实世界中很少会要求精确到普通浮点数能提供的17 位精度,执行大量运算的时候速度很重要。所以使用不要随便用decimal.

总的来说, decimal 模块主要用在涉及到金融的领域。在这类程序中,哪怕是一点
小小的误差在计算过程中蔓延都是不允许的。因此, decimal 模块为解决这类问题提
供了方法。当Python 和数据库打交道的时候也通常会遇到Decimal 对象,并且,通
常也是在处理金融数据的时候。

Python:执行精确的浮点数运算相关推荐

  1. Python执行精确的浮点数运算

    有时候:代码上数字计算可能会有如同下面的误差 原因: 这些错误是由底层CPU和IEEE 754标准通过自己的浮点单位去执行算术时的特征. 由于Python的浮点数据类型使用底层表示存储数据,因此你没办 ...

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

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

  3. 《Python Cookbook 3rd》笔记(3.2):执行精确的浮点数运算

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

  4. python精确运算_Python:执行精确的浮点数运算

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

  5. python3的float数精度_Python3 - 执行精确的浮点数运算

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

  6. Java中实现精确的浮点数运算

    我们知道,在 Java 中直接对浮点数进行运算会出现精度丢失的现象,那么如何解决这一问题呢? 我们需要借助 BigDecimal 来帮助我们进行浮点数的运算!!! 一.精确的浮点数运算示例代码 //示 ...

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

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

  8. python减法精确度不准是什么问题,聊聊Python中的浮点数运算不准确问题

    大家好,老 Amy 来了.之前就意识到一个问题,但是最近又有朋友提出来了,所以就想着干脆记录下来,分享给大家叭~ 啥问题呢?请看题: 也就是说,需要大家计算1.1-1的值,很多朋友会说:"e ...

  9. python精确小数点_python执行精确的小数计算方法

    在进行浮点数计算时它们无法精确表达出所有的十进制小数位. a = 4.1 b = 5.329 print(a+b) 9.428999999999998 这些误差实际上是底层CPU的浮点运算单元和IEE ...

最新文章

  1. Oracle数据字典
  2. html标签ref,HTML: param 标签
  3. 1075 PAT Judge (25 分)【难度: 一般 / 知识点: 多关键字排序】
  4. 巧用Win2003负载平衡服务实现LCS2005企业版的部署:LCS2005系列之五
  5. 微电网日前优化调度 。算例有代码(0)
  6. 坚持做一件事情真的很不容易,首先必须要克服惰性!
  7. MySQL入门-3:安装与客户端工具
  8. 为特使建立控制平面的指南-识别组件
  9. Android4.0蓝牙使能的详细解析
  10. Facebook 发币 Libra;谷歌十亿美金为穷人造房;第四代树莓派 Raspberry Pi 4 发布 | 开发者周刊...
  11. 分布排序(distribution sorts)算法大串讲
  12. 2.3安装工业相机SDK及测试
  13. Daemontools和Supervisor管理linux常驻进程
  14. php制作水印图片,PHP实例制作水印图片
  15. Missing radix parameter radix
  16. net_speeder发双倍包加速
  17. 用JavaFX几个简单动画——旋转风车、运动的圆
  18. mongoDB数据库mong.conf配置文件的问题
  19. 每天3分钟知晓天下事,一句话新闻资讯简报的公众号推荐
  20. office被wps捆绑,wps删不干净,word等文件打开始终默认为wps怎么办

热门文章

  1. [Unity3d]定义自己的鼠标
  2. 一步快速将Smartform output转成生成PDF文件
  3. 45、Power Query-缺少功能区选项卡
  4. 12星座男生最吃哪一套
  5. SAP 物料订单创建、下达、报工、收货与投料(ABAP代码)
  6. ABAP 选择屏幕上添加按钮,按钮上添加文字和图片
  7. 不需要SAP请求号修改程序的方法
  8. co11n——生产订单确认的BAPI
  9. 短视频进入下半场,价值创造成赛点
  10. 保鲜、保生,生鲜电商的两码事