位置: 编程技术 - 正文

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)

  • 税控盘白盘和黑盘一样吗
  • 汇算清缴现金流量表怎么填
  • 累计扣税法什么时候实行的
  • 用友t3年末怎么结转
  • 知识产权申报费用多少钱
  • 从事演出业务取得的收入
  • 销售免税药品要进项税额转出吗
  • 计提存货跌价准备是递延所得税资产吗
  • 公司收的保证金可以打入私人账户吗
  • 现金货款退回如何做会计分录呢?
  • 存货质押贷款风险
  • 驻外人员医保报销
  • 公司成立后有哪些开支
  • 地质勘察费用应由谁支付
  • 提供部分原料的英文
  • 17点增值税发票能开吗
  • 地税都包括什么
  • 火腿属于免税产品吗
  • 本期销售额未达起征点请将本期应纳税额
  • 凭证上附单据多少张怎么看
  • 坏账准备什么时候转回
  • 如何禁用bios里的secure boot
  • 金融工具中股利是什么
  • php验证码代码怎么写
  • php随机ua
  • php设计模式六大原则
  • PHP:json_last_error_msg()的用法_JSON函数
  • 销售方收到购买方的红字信息表
  • 住房房产税如何征收
  • php socket_create
  • php连接mysql数据库的几种方式及区别
  • 企业出售生产设备能开票吗怎么开
  • php处理xml数据
  • vue前端开发常见问题
  • 傅里叶级数狄利克雷判别法
  • vue的ref怎么用
  • 电赛2021题目
  • vue路由守卫用法
  • journal.tmp
  • dos命令怎么转到d盘
  • 金融机构拆出资金的最长期限
  • css的transition滑动效果
  • php写在html里不行
  • python slic
  • 劳务维修费怎么开票
  • 空白发票作废怎么处理
  • 出租固定资产租金属于什么收入
  • 什么是非营利性组织
  • 代销产品如何做会计分录
  • 售后回租的实质
  • 租赁公司异地经营
  • 税务局返还税款账务处理
  • 对方开的增值税普票怎么查
  • 设计费要计入固定成本吗
  • 保理融资的费用由谁承担
  • 资产减值损失和资产处置损益区别
  • 公司无偿更换产品违法吗
  • 试算平衡表的编制方法
  • 存出保证金的账务处理
  • 教育费附加如何做分录
  • 私营公司固定资产怎么查
  • 播放windows xp
  • fedora update-grub
  • solaris init
  • 什么是suv汽车
  • 安装win7旗舰版用户名和密码是多少
  • Ubuntu下VirtualBox的vdi文件克隆方法
  • virtualbox安装win7详细教程
  • win7任务栏颜色怎么改成蓝色
  • 在linux中使用什么命令可以执行shell脚本
  • CentOS救援模式实验笔记详解
  • downloader.exe是什么
  • win7360安全卫士有必要装吗
  • opengl控制物体移动
  • js移动元素位置
  • android iframe
  • Python中str is not callable问题详解及解决办法
  • python remote
  • 安卓手机管家推荐
  • 营业费用指哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设