声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

不知道你遇到过下面这种怪现象没有,同样的表达式却有不同的显示结果。下面第一个是交互提示模式下的自动回显,第二个是打印语句显示:

>>> b / (2.0 + a)         # Auto echo output: more digits

0.80000000000000004

>>> print(b / (2.0 + a)) # print rounds off digits

0.8

在这个奇怪结果背后的真正原因是浮点数的硬件限制,以及它无法精确地表现一些值。因为计算机架构不是本教程能够涵盖的,所以,我们将简要解释成第一个输出是实际存储在计算机的浮点数硬件中的,仅仅是你不习惯看它们而已。如果你不想看到所有的位数,就使用print。

注意,尽管这样,并不是所有的值都有这么多的数字位数需要显示:

>>> 1 / 2.0

0.5

并且除了打印和自动回显之外,还有很多种方法显示计算机中的数字的位数:

>>> num = 1 / 3.0

>>> num # Echoes

0.33333333333333331




>>> print(num) # print rounds

0.333333333333

>>> '%e' % num # String formatting expression

'3.333333e-001'

>>> '%4.2f' % num # Alternative floating-point format

'0.33'

>>> '{0:4.2f}'.format(num) # String formatting method (Python 2.6 and 3.0)

'0.33'

这些方法中的最后三个使用了字符串格式化,这是灵活地进行格式化的一种工具,我们将会在以后的文章中介绍它。


我的微信公众号是“人工智能知识分享”

python系列教程57_python