位置: 编程技术 - 正文

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)

  • 金税盘开票软件密码忘记怎么办
  • 旅客运输服务解释
  • 权益法核算转成本法
  • 合并报表是按年还是按月
  • 2021年成本类科目
  • 员工出差的住宿费计入什么科目
  • 已经退税的增票怎么做账
  • 收回已作为坏账准备的应收账款会计分录
  • 如何理解递延所得税资产和负债计算
  • 税务机关退水利基金怎么做账?
  • 出口没有退税的发票
  • 企业出售房屋交什么税
  • 企业案例描述
  • 小型微利企业普惠性
  • 企业成本费用包含
  • 收到发票未抵扣谁开红字
  • 补交去年的企业所得税怎么做账务处理
  • 大白菜u盘启动后黑屏
  • 处置子公司属于调整事项吗
  • WordPress导航菜单权限控制
  • linux必不可少的分区
  • 贷款核销对个人的影响
  • 废品损失是什么类账户
  • 收入的特征包括什么
  • 工会捐款计入什么科目
  • 公民什么情况纳税
  • 企业汇算清缴发现之前收入记多了可以调整吗
  • [ChatGPT] 从 GPT-3.5 到 GPT-5 的进化之路 | ChatGPT和程序员 : 协作 or 取代
  • CV攻城狮入门VIT(vision transformer)之旅——VIT原理详解篇
  • 特征融合add
  • php正则匹配a标签href
  • 医院职工医疗保险报销比例
  • 送货运输费用税率
  • 税务发票红字发票怎么开
  • mongodb主从同步速度
  • 运输发票抵扣进项税额
  • 逆回购划算吗
  • 小微企业税款征收方式
  • 电脑访问另一台电脑访问权限
  • 固定资产直接进费用表示表示一次性计提折旧
  • 小企业会计准则适用于哪些企业
  • 酒店购买天然气开票的摘要写什么
  • 免税商品外汇业务
  • 超市购销和联营哪个好
  • 分配现金股利如何做会计分录
  • 劳务公司核定征收怎么交税的
  • 预缴增值税税款所属期
  • 固定资产折旧年限
  • 公司对外投资企业与行政许可的区别是什么
  • 计提社保公积金个税会计分录
  • 核定征收的一般纳税人进项税额抵扣
  • 金税盘抵扣在申报表哪填
  • 给员工购买的意外险可以税前扣除吗
  • 企业收到的政府补助属于
  • 融资租赁和经营租赁的会计处理
  • 长期股权投资成本法会计处理
  • 增值税专用发票和普通发票的区别
  • 企业主要的工会是什么
  • 10万以下销售额怎么算
  • 公司被冻结
  • 企业的管理人员应该是互补型
  • 利用公式计算填空题
  • mysql查找指定元素的位置
  • debian9.6安装教程
  • mysql5.7.
  • mac自带的看图软件怎么使用
  • SMceMan.exe - SMceMan进程是什么意思
  • fs是什么文件夹
  • linux中比较文件链接数的变化
  • 订书针的原理
  • win10交接wifi
  • cocos2dx开发的游戏有哪些
  • [置顶] 此外,车牌号:454118(懂得都懂[doge])
  • 批处理界面
  • unity intercom
  • js间隔执行的代码
  • jquery.browser
  • 卷票是什么票
  • 社保在哪里缴费
  • 专票清单用什么纸打印
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设