详细聊聊为什么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 列表 sort()函数使用实例详解

    Python 列表 sort()函数使用实例详解

    这篇文章主要介绍了Python 列表 sort()函数使用详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • SQLite3中文编码 Python的实现

    SQLite3中文编码 Python的实现

    下面小编就为大家带来一篇SQLite3中文编码 Python的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • python如何通过闭包实现计算器的功能

    python如何通过闭包实现计算器的功能

    这篇文章主要介绍了python如何通过闭包实现计算器的功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • python使用xpath获取页面元素的使用

    python使用xpath获取页面元素的使用

    本文主要介绍了python使用xpath获取页面元素的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Python实现七彩蟒蛇绘制实例代码

    Python实现七彩蟒蛇绘制实例代码

    这篇文章主要介绍了Python实现七彩蟒蛇绘制实例代码,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Pandas 类型转换astype()的实现

    Pandas 类型转换astype()的实现

    本文主要介绍了Pandas 类型转换astype()的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Python利用zhdate模块实现农历日期处理

    Python利用zhdate模块实现农历日期处理

    zhdate模块统计从1900年到2100年的农历月份数据代码,支持农历和公历之间的转化,并且支持日期差额运算。本文将利用这一模块实现农历日期的处理,需要的可以参考一下
    2022-03-03
  • Pytorch Mac GPU 训练与测评实例

    Pytorch Mac GPU 训练与测评实例

    这篇文章主要为大家介绍了Pytorch Mac GPU 训练与测评实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Python源码解析之List

    Python源码解析之List

    今天带大家来复习Python底层代码LIST,文中有非常详细的介绍及代码示例,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • Python装饰器使用示例及实际应用例子

    Python装饰器使用示例及实际应用例子

    这篇文章主要介绍了Python装饰器使用示例及实际应用例子,本文给出了斐波拉契数列、注册回调函数、mysql封装、线程异步等实际使用示例,需要的朋友可以参考下
    2015-03-03

最新评论