位置: 编程技术 - 正文

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)

  • 初级农产品免税原理
  • 公司出售房产缴纳税金如何凭证
  • 流转税包括哪些税种2022
  • 扣缴义务人和纳税人举例
  • 记账凭证背面怎么填写
  • 计提 增值税
  • 固定资产账面金额什么意思
  • 售后服务企业返利政策
  • 房租收入纳税义务
  • 转让无形资产专利权的账务处理
  • 别人开业送的花怎么说
  • 以前年度损益调整会计分录
  • 单位付款方式
  • 企业所得税减免优惠政策
  • 企业发现多缴税款超过3年
  • 房地产开发企业什么意思
  • 融资租赁和融资性售后回租的区别
  • 小规模纳税人按季收入不达30万
  • 租赁合同未付款生效吗
  • 企业增速怎么算
  • win10隐藏功能大全
  • 新版edge浏览器设置背景图片
  • 手机网速测试怎么看多少兆网
  • mac侧边栏设置
  • 公司收到供应商的律师函
  • 公司帮员工代缴社保有风险吗
  • 注销税务时其他应付款的账务处理
  • 苹果手机最贵的软件是哪个
  • 属于资本的是
  • 小规模纳税人免税政策2023年
  • 今日清明节的下一句是什么
  • 【历史上的今天】4 月 7 日:IBM System/360 问世;以太网的发明者诞生;第一个 RFC 文档发布
  • 前端常见面试
  • js中this指向有几种情况
  • 企业对于预支工资的建议
  • 支付版权费用账号是什么
  • 免抵退税额怎么计算城建税
  • 帝国cms专题
  • 公益性捐赠支出纳税调整
  • dedecms转其他cms
  • 政府会计准则的双报告
  • 合同不交印花税怎么处理
  • 委外加工怎么盘点
  • sql server 自定义排序
  • sql service 2008 数据库还原
  • 预付款已经开了发票要怎么做账
  • 两处取得工资薪金如何申报
  • 哪些人需要税务会计
  • 原始凭证收集
  • 12月计提的工资没有发完怎么做账
  • 账务调整会计分录
  • 商业承兑汇票是什么
  • 实例讲解液化滤镜瘦身
  • windows2008教程
  • macbookair触控板维修
  • telnet root
  • 笔记本开机白屏进不了桌面
  • windows8怎么新建word文档
  • kvm支持的系统
  • linux判断程序是否运行
  • windows8.
  • perl调用perl脚本
  • unity onbecameinvisible
  • linux for i in
  • activity的生命周期有哪些状态
  • python 详细
  • linux读出文件
  • unity3d操作
  • 编写高质量代码改善JAVA程序的151个建议
  • js中push和pop
  • jquery .html的用法
  • Struts2+jquery.form.js实现图片与文件上传的方法
  • 自然人申报密码丢失如何找回
  • 税务局怎么添加税种
  • 税务局风险防控形成长远
  • 四川国税局局长是谁
  • 个人所得税完税证明怎么开具
  • 车辆营运证去哪里审
  • 营业税纳税申报时间
  • 中国的消费税是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设