python中精确的浮点数运算示例

 更新时间:2023年07月25日 15:49:00   作者:weapon  
这篇文章主要为大家介绍了python中精确的浮点数运算示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

起步

浮点数的一个普遍的问题是它们不能精确的表示十进制数。

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

这是由于底层 CPU 和 IEEE 754 标准通过自己的浮点单位去执行算术时的特征。看似有穷的小数, 在计算机的二进制表示里却是无穷的。

一般情况下,这一点点的小误差是允许存在的。如果不能容忍这种误差(比如金融领域),那么就要考虑用一些途径来解决这个问题了。

Decimal

使用这个模块不会出现任何小误差。

>>> 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 支持所有常用的数学运算。 decimal 模块允许你控制计算的每一方面,包括数字位数和四舍五入。在这样做之前,需要创建一个临时上下文环境来改变这种设定:

>>> from decimal import Decimal, localcontext
>>> a = Decimal('1.3')
>>> b = Decimal('1.7')
>>> print(a / b)
0.7647058823529411764705882353
>>> with localcontext() as ctx:
...     ctx.prec = 3
...     print(a / b)
...
0.765
>>> with localcontext() as ctx:
...     ctx.prec = 50
...     print(a / b)
...
0.76470588235294117647058823529411764705882352941176
>>>

由于 Decimal 的高精度数字自然也就用字符串来做展示和中转。

总结

总的来说,当涉及金融领域时,哪怕是一点小小的误差在计算过程中都是不允许的。因此 decimal 模块为解决这类问题提供了方法。

以上就是python中精确的浮点数运算示例的详细内容,更多关于python浮点数运算的资料请关注脚本之家其它相关文章!

相关文章

  • python批量生成身份证号到Excel的两种方法实例

    python批量生成身份证号到Excel的两种方法实例

    这篇文章主要给大家介绍了关于python批量生成身份证号到Excel的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • django自定义Field实现一个字段存储以逗号分隔的字符串

    django自定义Field实现一个字段存储以逗号分隔的字符串

    这篇文章主要介绍了django自定义Field实现一个字段存储以逗号分隔的字符串的示例,需要的朋友可以参考下
    2014-04-04
  • 利用 Python 实现随机相对强弱指数 StochRSI

    利用 Python 实现随机相对强弱指数 StochRSI

    随机相对强弱指数简称为StochRSI,是一种技术分析指标,用于确定资产是否处于超买或超卖状态,也用于确定当前市场的态势。本篇文章小编九来为大家介绍随机相对强弱指数简称为StochRSI,需要的朋友可以参考下面文章的具体内容
    2021-09-09
  • python模拟鼠标点击和键盘输入的操作

    python模拟鼠标点击和键盘输入的操作

    这篇文章主要介绍了python模拟鼠标点击和键盘输入的操作,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 使用selenium模拟动态登录百度页面的实现

    使用selenium模拟动态登录百度页面的实现

    本文主要介绍了使用selenium模拟动态登录百度页面,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 部署Python的框架下的web app的详细教程

    部署Python的框架下的web app的详细教程

    这篇文章主要介绍了Python部署web app的详细教程,示例代码基于Python2.x版本,需要的朋友可以参考下
    2015-04-04
  • Flask 数据库迁移详情

    Flask 数据库迁移详情

    本文给大家分享的是 Flask 数据库迁移详情,db.create_all()不会重新创建表或是更新表,需要先使用db.drop_all()删除数据库中所有的表之后再调用db.create_all()才能重新创建表,但是这样的话,原来表中的数据就都被删除了,这肯定是不行的,这时就出现了数据库迁移的概念
    2021-11-11
  • python翻译软件实现代码(使用google api完成)

    python翻译软件实现代码(使用google api完成)

    这篇文章主要介绍了python结合google api完成的翻译软件实现代码,大家参考使用
    2013-11-11
  • 基于python-opencv3实现图像显示和保存操作

    基于python-opencv3实现图像显示和保存操作

    这篇文章主要介绍了基于python opencv3的图像显示和保存操作方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-06-06
  • Python日期时间模块arrow的具体使用

    Python日期时间模块arrow的具体使用

    Python中有很多时间和日期处理的库,有time、datetime等,本文主要介绍了一下arrow,arrow是一个专门处理时间和日期的轻量级Python库,感兴趣的可以了解一下
    2021-09-09

最新评论