位置: 编程技术 - 正文

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)

  • 期间费用明细表怎么填
  • 账本印花税的计税依据
  • 税收的基本特征包括?
  • 电商账务处理及收入成本如何确定?
  • 股份有限公司个人所得税缴纳比例
  • 发票第一联需要保存多久
  • 子公司内部交易抵消举例说明
  • 非主营业务收入计入什么科目
  • 国际货运代理0税率和免税
  • 核定征收企业股权转让的税收
  • 房地产企业可以贷款吗
  • 土地转让契税税率2020税率表
  • pos机刷卡的银行有哪些
  • 一般纳税人制作除尘器的制作费开票税率是多少
  • 增资后调减资本怎么计算
  • 购买东西进项税在借方还是贷方
  • 开票与实际收款不一致有什么风险
  • 公司注销固定资产怎么处理税怎么交
  • 现金收据为什么也在自制原始凭证的范畴呢?
  • 模具可以申请专利吗
  • 股权转让印花税减半征收政策
  • 承包承租经营单位是什么意思
  • 个人所得税法规定可减征个税的情形有
  • 企业税收风险有哪些方面
  • 无票收入如何抵税
  • 企业把活承包给个人,和企业有劳动关系吗?
  • 溢价发行债券利息
  • 用户登录系统后首先进入什么
  • 增值税中的视同销售区分为几种情况?
  • 物业专项维修资金可以退还吗
  • windows7旗舰版最新版本
  • 对公帐户定期存款利率
  • 基金管理人业绩报酬分配模式
  • regsrv.exe - regsrv是什么进程 有什么用
  • 房地产企业预缴增值税如何申报
  • 免抵退税额好难懂
  • 建筑劳务 行业
  • segment anything model模型 需要的配置
  • php简单获取网站的方法
  • 微擎框架开发小程序
  • 提前开具发票怎么做账
  • 十年磨一剑的下一句幽默
  • 软件和硬件如何分开
  • 购买金税盘是全额抵扣吗
  • sql 文件存储
  • 收到银行承兑汇票计入什么科目
  • 累计盈余定义
  • 收到社保局的生育津贴并付给职工如何入账
  • 车辆违章处理有什么规定
  • 管理费用如何结转成本
  • 房地产企业抵押借款
  • 材料运费计入什么科目
  • 事业单位支付的劳务派遣人员工资计入什么科目
  • 费用预算表怎么做
  • 职工薪酬包括哪四项内容
  • 计入当期损益是不是计入三大期间费用
  • ubuntu20.04.2
  • 微软为什么放弃win10
  • solaris newfs
  • windowsxp开机启动项在哪里设置
  • linuxvi编辑器的用法
  • win8文件夹选项在哪
  • windows 10预览版
  • eclipce System.loadLibrary报错
  • js判断手机浏览器设置了电脑版浏览
  • unity mrt
  • javascript基于什么的语言
  • android应用结构包括哪些
  • nodejs.
  • android 设置背景
  • android需要学什么
  • js原型作用
  • socket.io与pm2(cluster)集群搭配的解决方案
  • node.js权威指南
  • 河南省城镇土地使用税优惠政策2020
  • 个人开服务费发票 个人所得税
  • 个体工商户票种核定金额应该填多少
  • 湖南社保卡怎么网上缴费
  • 黑龙江省国税局举报电话
  • 数电发票抄报税操作流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设