位置: 编程技术 - 正文

python中实现精确的浮点数运算详解(python如何精确小数)

编辑:rootadmin

推荐整理分享python中实现精确的浮点数运算详解(python如何精确小数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python精准计算,python 精确匹配,python如何精确小数,python精准计算,python精准计算,python精确到整数,python 精确度,python怎么能精确计算,内容如对您有帮助,希望把文章链接给更多的朋友!

为什么说浮点数缺乏精确性?

在开始本文之前,让我们先来谈谈浮点数为什么缺乏精确性的问题,其实这不是Python的问题,而是实数的无限精度跟计算机的有限内存之间的矛盾。

举个例子,假如说我只能使用整数(即只精确到个位,计算机内的浮点数也只有有限精度,以C语言中的双精度浮点数double为例,精度为个二进制位),要表示任意实数(无限精度)的时候我就只能通过舍入(rounding)来近似表示。

比如1.2我会表示成1,2.4表示成2,3.6表示成4.

所以呢?

在算1.2 - 1.2的时候,由于计算机表示的问题,我算的实际上是1 - 1,结果是0,碰巧蒙对了;

在算1.2 + 1.2 - 2.4的时候,由于计算机表示的问题,我算的实际上是1 + 1 - 2,结果是0,再次蒙对了;

但是在算1.2 + 1.2 + 1.2 - 3.6的时候,由于计算机表示的问题,我算的实际上是1 + 1 + 1 - 4,结果是-1,运气没那么好啦!

这里的1.2, 2.4, 3.6就相当于你问题里的0.1, 0.2和0.3,1, 2, 4则是真正在计算机内部进行运算的数值,我说清楚了吗?

python中实现精确的浮点数运算详解(python如何精确小数)

其他请看IEEE 浮点数标准,比如CSAPP第二章啥的(虽然估计你没兴趣看)。

另:不仅仅是浮点数的在计算机内部的表示有误差,运算本身也可能会有误差。比如整数2可以在计算机内准确表示,但是要算根号2就有误差了;再比如两个浮点数相除,本来两个数都是精确表示的,但除的结果精度却超出了计算机内实数的表示范围,然后就有误差了。

好了,下面话不多说了,开始本文的正文:

起步

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

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

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

Decimal

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

尽管代码看起来比较奇怪,使用字符串来表示数字,但是 Decimal 支持所有常用的数学运算。 decimal 模块允许你控制计算的每一方面,包括数字位数和四舍五入。在这样做之前,需要创建一个临时上下文环境来改变这种设定:

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

总结

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

好了,

标签: python如何精确小数

本文链接地址:https://www.jiuchutong.com/biancheng/372150.html 转载请保留说明!

上一篇:利用Python-iGraph如何绘制贴吧/微博的好友关系图详解(利用python-Flask框架搭建本地数据可视化网站 原创)

下一篇:python安装numpy&安装matplotlib& scipy的教程(python2.7安装numpy)

  • 年度减免税限额
  • 契税通过应交税费
  • 考税务师的报考条件
  • 社保阶段性减免延长到年底
  • 一般风险准备是留存收益吗
  • 影响年初未分配利润的事项
  • 税盘锁了还能报税吗
  • 公司注册住所要求
  • 农产品加工增值率怎么算
  • 办理产权证费用明细
  • 在建工程的计算公式
  • 外籍人员的个人所得税怎么算
  • 房地产公司靠什么赚钱
  • 免征增值税的进项税额如何处理
  • 退税可以分批吗
  • 中途建账期初余额错误怎么纠正
  • 减值 计提
  • 未完工产品成本计算公式
  • 更改onedrive文件夹位置
  • 期间费用可以计入产品成本的费用吗
  • 上月开的发票会计漏做帐本月应如何补做账?
  • mcdlc.exe - mcdlc是什么进程文件 有何作用
  • 日记账和总账一般采用
  • 微信公众号 h5 保存openid
  • linux创建一个文件并写入内容
  • 苹果发布macOS13.3预览版
  • Obsidian:实现日记记录【设计并使用模板】
  • php解析json对象
  • 北京猿创源科技有限公司
  • 政府会计制度收入支出表
  • 政府会计无偿调拨资产账务处理
  • 宝塔运行go
  • 应交增值税进项税额月底怎么处理
  • 企业贷款利息可以开发票吗
  • python的多线程 吃cpu太厉害
  • Sqlite数据库里插入数据的条数上限是500
  • 把mysql移到其他盘
  • 织梦怎么样
  • 城建税要计入税金及附加吗
  • 企业之间借款有利息要开票吗
  • 支付增值税税控系统技术维护费用
  • 应交税费应交增值税销项税额
  • 发票票种核定发票种类怎么选
  • 库存现金错账怎么调整
  • 小规模定额征收和查账征收哪个更好一些
  • 贷款担保费应计入什么
  • 技术转让费如何计算
  • 建筑工程公司需要哪些资质证书
  • 房租没有发票如何交税
  • 其他应付款二级科目有哪些
  • 制造费用转入什么
  • 加计扣除声明怎么填
  • 弱电工程属于什么行业
  • sql server日期相减
  • 怎么停止u盘自动运行
  • win7打开控制面板快捷键
  • 在unix系统中采用的页面置换
  • 虚拟机vmx
  • windowsupdate.diagcab
  • 滑动关闭电脑功能按键在哪找
  • 新买的u盘安全吗
  • linux系统中网络配置文件一般放在
  • rundll32.exe是病毒吗
  • win10系统局域网共享打印机设置
  • mac idle
  • 超级按钮条上的设置
  • 升级win10系统后安装谷歌打不开
  • Win7系统打开蓝牙
  • Extjs中DisplayField的日期或者数字格式化扩展
  • h5抽奖转盘
  • Android Bound Service(二) ----- Using AIDL
  • sql怎么设置自增列
  • Node.js中的事件循环是什么样的
  • js选中文字
  • webpack循环引用
  • 增值税9%税率适用范围2023
  • 香港居民个人转让境内股权所得个人所得税税率
  • 税务蓝和电信蓝一样吗
  • 德阳契税2021年新规
  • 税务培训主题
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设