详细聊聊为什么Python中0.2+0.1不等于0.3

 更新时间:2022年12月06日 10:41:42   作者:阳光下的小恐龙  
最近在学习过程中发现在计算机JS时发现了一个非常有意思事,0.1+0.2的结果不是0.3,而是0.30000000000000004,下面这篇文章主要给大家介绍了关于为什么Python中0.2+0.1不等于0.3的相关资料,需要的朋友可以参考下

为什么Python中0.2+0.1不等于0.3

大家请看下面的python程序代码:

print(0.2+0.1)

猜一猜运行结果是什么,是0.3吗?

NoNoNo!

来看一看运行结果:

0.30000000000000004

为什么是0.30000000000000004呢?

浮点数运算

这是因为在计算机中,浮点数运算也是要先转化为二进制的

1.浮点数如何转化为二进制:

⑴整数部分:除以2,取出余数,商继续除以2,直到得到0为止,将取出的余数逆序

⑵小数部分:乘以2,然后取出整数部分,将剩下的小数部分继续乘以2,然后再取整数部分,一直取到小数部分为零为止。

如果永远不为零,则按要求保留足够位数的小数,最后一位做0舍1入。将取出的整数顺序排列。

2. 0.2转化为二进制:(只看小数点后)

0.2 × 2 = 0.4 取 0
0.4 × 2 = 0.8 取 0
0.8 × 2 = 1.6 取 1
0.6 × 2 = 1.2 取 1
0.2 × 2 = 0.4 取 0
0.4 × 2 = 0.8 取 0
0.8 × 2 = 1.6 取 1

所以0.2转化为浮点数为0.001100110011…(0011无限循环)0.1转化为二进制:

同理0.1转化为浮点数为0.0001100110011…(0011无限循环)

0.2+0.1

因为在计算机中,0.2和0.1都不是确定的数,而是近似值,因此它们经过浮点数运算(对阶、尾数运算、规格化处理、舍入处理、溢出处理)后得到的值也是近似值,经过了计算机的四舍五入。所以结果是0.30000000000000004

附:实现0.1+0.2==0.3

在python中有一个模块decimal可以解决0.1+0.2!=0.3的问题。

decimal模块提供了一个Decimal数据类型用于浮点数的计算,相比于内置的二进制浮点数计算更加精确。

简单的使用方法:给decimal传递Decimal整型或者字符串类型,但不能是浮点数据(浮点数据本身不准确)

总结

到此这篇关于为什么Python中0.2+0.1不等于0.3的文章就介绍到这了,更多相关Python 0.2+0.1不等于0.3内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python接口自动化浅析unittest单元测试原理

    Python接口自动化浅析unittest单元测试原理

    这篇文章主要介绍了Python接口自动化浅析unittest单元测试原理,文中描述了单元测试,unittest模块特性、大致流程、源码及实战例子这几个模块,有需要的朋友可以借鉴参考下
    2021-08-08
  • Python 3.9的到来到底是意味着什么

    Python 3.9的到来到底是意味着什么

    本文主要介绍Python3.9的一些新特性比如说更快速的进程释放,性能的提升,简便的新字符串函数,字典并集运算符以及更兼容稳定的内部API,感兴趣的朋友跟随小编一起看看吧
    2020-10-10
  • Python 如何保存json文件并格式化

    Python 如何保存json文件并格式化

    这篇文章主要介绍了Python 如何保存json文件并格式化,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Python中文分词实现方法(安装pymmseg)

    Python中文分词实现方法(安装pymmseg)

    这篇文章主要介绍了Python中文分词实现方法,通过安装pymmseg来实现分词功能,涉及pymmseg的下载、解压、安装及使用技巧,需要的朋友可以参考下
    2016-06-06
  • Python深度学习之FastText实现文本分类详解

    Python深度学习之FastText实现文本分类详解

    FastText是一种典型的深度学习词向量的表示方法,它非常简单通过Embedding层将单词映射到稠密空间,然后将句子中所有的单词在Embedding空间中进行平均,进而完成分类操作
    2022-09-09
  • Python中根据时间自动创建文件夹的代码实现

    Python中根据时间自动创建文件夹的代码实现

    这篇文章主要介绍了Python中根据时间自动创建文件夹的代码实现,这样的话给工作带来极大的便利,方便桌面文件按时间存放,具体实例代码跟随小编一起看看吧
    2021-10-10
  • python统计字符串中指定字符出现次数的方法

    python统计字符串中指定字符出现次数的方法

    这篇文章主要介绍了python统计字符串中指定字符出现次数的方法,涉及Python中count函数的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 使用Python程序计算钢琴88个键的音高

    使用Python程序计算钢琴88个键的音高

    这篇文章介绍了使用Python程序计算钢琴88个键的音高,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • Python字符串转换成浮点数函数分享

    Python字符串转换成浮点数函数分享

    本文给大家分享的是一则使用Python实现字符串转换成浮点数的代码,主要是使用map和reduce方法来实现,有需要的小伙伴可以参考下。
    2015-07-07
  • Python实现使用dir获取类的方法列表

    Python实现使用dir获取类的方法列表

    今天小编就为大家分享一篇Python实现使用dir获取类的方法列表,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12

最新评论