位置: 编程技术 - 正文

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)

  • 一般纳税人抵扣小规模期间的专票怎么解决
  • 城建税多少会减免
  • 应收应付账务处理工作具体做哪些
  • 有金额的框架协议要交印花税吗
  • 免费给客户提供服务怎么做账
  • 企业所得税汇总纳税分配比例
  • 出差回来报销差旅费,补付现金的会计分录
  • 行政单位收到行政事业性收费,需要上缴国库
  • 应收账款多记如何调账?
  • 道路占用挖掘费要交印花税吗
  • 银行扣除的贴现利息怎么算
  • 网站服务器使用什么IP地址
  • 建筑企业升资质主管单位
  • 固定资产大修理和更新改造的区别
  • 年终奖扣税标准计算器
  • 固定资产移交给别的单位怎么做账
  • 万份收益是什么意思0.6
  • 境外投资亏损是否可以抵减境内盈利
  • 出口退税款的账户是什么
  • 无法支付的款项转销
  • 怎么免费获取百度文库的付费文档
  • 全部投资内部收益率
  • 应付工资薪酬期末应该为0吗
  • 如何使用windows的记事本创建文件
  • thinkphp 路由
  • thinkphp微信公众号开发
  • macbook无限输入z
  • linux服务器nfs安装
  • 如何失业保险金
  • 客户尾款不付会计分录
  • 公司年终奖怎么缴税
  • 股权投资的收益回收方式
  • 企业购入软件会计分录
  • 计算企业所得税分录
  • torch训练模型
  • 不抵扣的进项税怎么做账
  • 工会经费和残保金的缴纳比例
  • 办公室设计费计入什么
  • 非同级财政拨款收入属于什么科目
  • javascript网页自动化
  • 其他收益增加说明什么
  • mla指令
  • python 二值化
  • 出口抵减内销产品应纳税额怎么结转
  • python处理数据教程
  • 增值税附加税的计算基数
  • 外贸企业出口退税申报流程
  • 哪些行业不用缴纳增值税
  • 小规模纳税人每月不超过10万
  • 辞退员工福利
  • 含消费税的商品开成了不含消费税怎么办
  • macos装mysql
  • 织梦会员功能
  • 没有原始凭证可以记账吗
  • 教育行业税收优势分析
  • 应付账款的入账时间为
  • 老板自己的钱给公司
  • 国际货运代理免增值税
  • 福利费列支的个税怎么算
  • 银行付款退回重付怎么办
  • 补交增值税如何入账
  • 出口为什么没有增值税
  • 付给非公司员工提成税务处理
  • sqlserver查询语句大全讲解
  • centos 离线安装git
  • 戴尔电脑u盘快速启动
  • window10玩英雄联盟卡顿怎么办
  • linux系统没有yum
  • centos如何添加监听端口
  • kprcycleaner.exe是什么
  • linux怎么设置
  • java复选按钮
  • nodejs image
  • python文本怎么运行
  • 安卓view事件分发
  • 客户端脚本错误怎么解决
  • 广东省地方税务局
  • 本期预缴税额怎么填
  • 土地分割抵押 如何实现抵押权
  • 税务注销了怎么查看纳税申报表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设