[python基础] 浮点数乘法的误差问题
>>> 2.2*3 6.6000000000000005
详细的原理在IEEE 754浮点数标准
小数以二进制形式表示时的有穷性导致的,
这不是Python的问题,而是实数的无限精度跟计算机的有限内存之间的矛盾
计算机的内存、cpu寄存器等等这些硬件单元都是有限的,只能表示有限位数的二进制位,因此存储的二进制小数就会和实际转换而成的二进制数有一定的误差。(你可以试着将0.3转化为二进制表示,也将出现一个循环小数。)
实际上,大多数情况下,小数在计算机中是以一种类似科学计数法的形式表示的,具体的可以参考一下其他的资料。但即便如此,仍然存在误差。
所以在python中不建议直接将两个浮点数进行大小比较,或者做精确的计算,往往会得到意想不到的结果。
关于控制精度的方法可以使用round和decimal模块
使用decimal模块计算时:
>>> from decimal import * >>> Decimal('2.2')*Decimal('3') Decimal('6.6')
相关链接
https://www.zhihu.com/question/25457573
转载于:https://www.cnblogs.com/Liubit/p/7634632.html
[python基础] 浮点数乘法的误差问题相关推荐
- python理解浮点数运算的误差_浮点数运算的机器误差分析
感觉跟专栏主题不是很搭... 不过这是这学期计算物理的作业,还是放上来吧,也算勉强沾边了吧. 用一个浮点数相加的例子来演示计算机在计算时所产生的误差. 在Python中,用0.2+0.4 会得到0.6 ...
- python理解浮点数运算的误差_Python 浮点数运算
浮点数用来存储计算机中的小数,与现实世界中的十进制小数不同的是,浮点数通过二进制的形式来表示一个小数.在深入了解浮点数的实现之前,先来看几个 Python 浮点数计算有意思的例子: 0.1 == 0. ...
- python理解浮点数运算的误差_PyTips 0x1a - Python 浮点数运算
版权声明:此文章转载自 Yushneng PyHub 如需转载请联系听云College团队成员阮小乙,邮箱:ruanqy#tingyun.com 本系列完整文档已托管在 Read the Docs: ...
- python理解浮点数运算的误差_浅谈浮点数运算的误差
测试程序 我们知道,浮点数运算存在舍入误差.在某些特殊的情况下,舍入误差还可以累计到非常大的地步.让我们来看一下测试程序吧: 1 usingSystem;2 3 static classDecimal ...
- Python基础,基本类型(整型,浮点数等)数据结构(List,dic(Map),Set,Tuple),控制语句(if,for,while,continue or break):来自学习资料
3.Python 基础 3.1.语法 Python的语法比较简单,采用缩进方式. i = -100 if i >= 0:print(i) else:print(-i) 3.2.基本类型 3.2. ...
- 关于python的浮点数类型、以下_python入门教程Python 浮点数数据类型详解 [学习 Python 必备基础知识][看此一篇就够了]...
python基础语法.jpg 您的"关注"和"点赞",是信任,是认可,是支持,是动力...... 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其 ...
- python基础——while循环(九九乘法表,阶乘计算器,三角形图案打印输出)
python基础--while循环(九九乘法表,阶乘计算器,三角形图案打印输出) 一.目的 本人最近在学习python的基础语法,此文章用来记录学习过程所用,本文章讲述的是while循环的一些基础实例 ...
- 【Python基础】为何0.1+0.2≠0.3,使用Python程序深入理解计算浮点数的运算
[Python基础]为何0.1+0.2≠0.3,使用Python程序深入理解计算机浮点数的运算 用过Python这门编程语言的应该都会发现,当我们输入0.1+0.2时,打印出来的却不是0.3,而是0. ...
- 【Python基础】告别枯燥,60 秒学会一个 Python 小例子(文末下载)
本文推荐一个python的傻瓜式的学习资源,内容简单易懂,让人可以在60 秒学会一个 Python 小例子 当前库已有 300多 个实用的小例子 本文来源:https://github.com/jac ...
最新文章
- RESTful服务最佳实践
- 模拟linux文件系统的设计及实现_Linux后台服务器开发中,内存池设计与实现(c/c++)...
- ios_UITextField右侧小圆叉
- Eclipse的JQuery提示插件-Spket(别试了,没什么效果,且安装设置麻烦)
- Eclipse for Android 开发环境搭建及各种坑
- 如何用计算机输入数学公式,使用Win7输入面板让数学公式输入更轻松
- 安徽大学计算机语言学考研真题,安徽大学外国语言学及应用语言学考研经验考研真题考研参考书复试分数线...
- 我们的开源项目-2013年度开源社区线下聚会《JEECG微云快速开发平台-SAAS企业应用在线开发与微信移动应用》PPT分享
- 终于有人把 5G 和边缘计算的关系说清楚了! | 技术头条
- 蓝桥杯 ADV-15算法提高 最大乘积
- 服务发现系统consul-HTTP API
- jQuery1.11源码分析(8)-----jQuery调用Sizzle引擎的相关API
- 十分钟学会Java RMI
- 2018,程序员要搭配这40条编程箴言!!!条条都是干货
- 微信支付H5完整版代码
- 利用excel制作二维码
- 一对一语音视频直播双端原生APP源码/thinkphp后台源码/社交交友语音视频聊天即时通信APP源码
- 小熊派-FreeRTOS-串口打印
- 移动App专项性能测试(Android and iOS)
- ElementUI表格多选数据处理