位置: 编程技术 - 正文

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)

  • 个体户转到个人要多少税
  • 非盈利组织确认及所得税汇算怎么做
  • 交车险代收的车船费怎么做的科目呀?
  • 最新增值税申报表及附表下载
  • 公司车辆的维修费挂什么科目
  • 长期股权投资的账务处理
  • 房地产企业所得税汇算清缴
  • 防伪税控开票系统技术维护费
  • 托收承付怎么理解
  • 临时售楼处要考虑消防吗
  • 应交税费减免税款
  • 销售商品发生的运费计入什么科目
  • 公账发工资是即时到账吗
  • 小企业 企业所得税
  • 关税征收目的
  • 少收的货款怎么入账
  • 金蝶kis云专业版原材料数量怎么录入
  • 小规模纳税人适用的增值税征收率
  • 稿费个人所得税计算方式
  • 固定资产报废鉴定意见
  • 个税手续费返还要交增值税吗
  • 升级打装备的手游
  • 收到银行承兑汇票后,如何取钱
  • win11闪屏问题
  • windows7中
  • mac怎么隐藏app
  • PHP:ereg_replace()的用法_Regex正则函数
  • 企业所得税汇算清缴调增的项目有哪些
  • 系统资源不足,无法
  • 孕妇能吃荔枝吗 孕晚期
  • 怎样搭建php开发平台
  • PHP:disk_total_space()的用法_Filesystem函数
  • 报废机器设备如何缴纳增值税
  • 材料采购计入资产负债表哪里
  • codelite怎么进行编译
  • php密码修改
  • 前端工程化的理解简书
  • 股权转让有溢价分录怎么写
  • php中实现文件上传需要用到哪几个函数
  • 设备租赁费属于设备费吗
  • 智能优化算法及其MATLAB实例
  • remote远程
  • 安装libtool
  • phpcms怎么样
  • 分公司在外地,企业怎么交税
  • 新会计准则增加了哪些科目
  • 客运收费标准
  • 印刷电机特点
  • 工会经费按工资总额的
  • 结转入库材料计什么科目
  • 承兑汇票贴现利率是怎么算
  • 数据库损坏了怎么修复
  • sql server s
  • 冲销上个月成本的会计分录
  • 在建工程的预付款账务处理
  • 什么人可以申请免税
  • 建筑工程和建筑装饰工程的区别
  • 低值易耗品摊销表格
  • 收款收据可以用于财务报账吗
  • 住房基金可以取出来用吗
  • 明细分类账的格式与登记方法
  • 民营企业固定资产管理规定
  • Windows 10 与 MySQL 5.5 安装使用及免安装使用详细教程(图文)
  • Centos7.3下mysql5.7.18安装并修改初始密码的方法
  • win8改win7怎么改
  • windows10电脑重置电脑
  • -f linux命令
  • centos7安装软件包命令
  • w7提高开机速度
  • win10升级win1
  • bat for do
  • unity shader lod
  • 我是如何从0开始做到年入1000+万的
  • cocos2d-js游戏开发
  • Unity3D游戏开发标准教程吴亚峰于复兴人民邮电出版社
  • js定时器的两种方法
  • 详解js的异步编码
  • 占位符设置
  • python简要介绍
  • 安卓开源项目叫什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设