python为什么浮点计算不准确?

简介: 用户经常对这样的结果感到惊讶: >>> 1.2 - 1.0 0.19999999999999996 并且认为这是 Python中的一个 bug。其实不是这样。这与 Python 关系不大,而与底层平台如何处理浮点数字关系更大。
+关注继续查看

用户经常对这样的结果感到惊讶:

>>> 1.2 - 1.0
0.19999999999999996

并且认为这是 Python中的一个 bug。其实不是这样。这与 Python 关系不大,而与底层平台如何处理浮点数字关系更大。

CPython 中的 float 类型使用C语言的 double 类型进行存储。 float 对象的值是以固定的精度(通常为 53 位)存储的二进制浮点数,由于 Python 使用 C 操作,而后者依赖于处理器中的硬件实现来执行浮点运算。 这意味着就浮点运算而言,Python 的行为类似于许多流行的语言,包括 C 和 Java。

许多可以轻松地用十进制表示的数字不能用二进制浮点表示。例如,之后:

>>> x = 1.2

为 x 存储的值是与十进制的值 1.2 (非常接近) 的近似值,但不完全等于它。 在典型的机器上,实际存储的值是:

1.0011001100110011001100110011001100110011001100110011 (binary)
确切地说:

1.1999999999999999555910790149937383830547332763671875 (decimal)
典型的 53 位精度为 Python 浮点数提供了 15-16 位小数的精度。

要获得更完整的解释,请参阅 Python 教程中的 浮点算术 一章。

相关文章
|
17天前
|
小程序 Python
Python实现读取Word表格计算汇总写入Excel
本文通过一个实例介绍了通过Python实现读取Word表格计算汇总写入Excel
24 0
Python实现读取Word表格计算汇总写入Excel
|
1月前
|
Python
【从零学习python 】06. Python中运用算数运算符进行计算和字符串拼接
【从零学习python 】06. Python中运用算数运算符进行计算和字符串拼接
23 0
|
1月前
|
算法 Python
Python【statistics】 — 统计学计算(总结一)
Python【statistics】 — 统计学计算(总结一)
|
2月前
|
算法 Python
综合能源系统分析的统一能路理论(三):《稳态与动态潮流计算》(Python代码实现)
综合能源系统分析的统一能路理论(三):《稳态与动态潮流计算》(Python代码实现)
|
2月前
|
数据挖掘 Python
|
2月前
|
Python
python计算某字符出现次数
​count() 方法用于统计字符串里某个字符或子字符串出现的次数.
31 0
|
3月前
|
Python
13.从入门到精通:Python 集合 集合的基本操作 1、添加元素 2、移除元素 3、计算集合元素个数 4、清空集合 5、判断元素是否在集合中存在 集合内置方法完整列表
13.从入门到精通:Python 集合 集合的基本操作 1、添加元素 2、移除元素 3、计算集合元素个数 4、清空集合 5、判断元素是否在集合中存在 集合内置方法完整列表
|
3月前
|
Python
Python计算圆周率
Python计算圆周率
35 0
|
3月前
|
Python
如何使用python计算圆锥的体积
如何使用python计算圆锥的体积
82 0
|
3月前
|
Python
使用python程序计算三角形的周长
使用python程序计算三角形的周长
53 0
相关产品
云迁移中心
推荐文章
更多