首页 » 父与子的编程之旅:与小卡特一起学Python » 父与子的编程之旅:与小卡特一起学Python全文在线阅读

《父与子的编程之旅:与小卡特一起学Python》3.5 非常大和非常小

关灯直达底部

还记得第 1 章中将两个非常大的数相乘吗?我们得到的答案也是一个非常大的数。

有时 Python 会用一种稍微不同的方式显示非常大的数。可以在交互模式中试试看:

>>> print 9938712345656.34 * 4823459023067.4564.79389717413e+025>>>  

(具体键入什么数并不重要——任何包含小数的大数值都可以。)

这个 e 是计算机中显示非常大或非常小的数时采用的一种方法。这叫做 E 记法(E-notation)。处理非常大(或非常小)的数时,要把所有数字以及小数位都显示出来可能很费劲。这种数在数学和科学领域经常出现。例如,如果一个天文程序要显示从地球到 Alpha Centaur 星的公里数,可能会显示为 38000000000000000 或者 38 000 000 000 000 000(38 后面有 15 个 0)。不论哪种方式,数完所有这些 0 都会让你累得够呛。

显示这些数还有另一种方式,就是使用科学计数法(scientific notation),就是一个小数再乘以一个 10 的幂。在科学计数法中,地球到 Alpha Centauri 的距离可以写作:3.8 × 1016(看到了吗,16 抬高了,而且要小一点)。这读作“3.8 乘以 10 的 16 次幂”或者“3.8 乘以 10 的 16 次方”。它的意思就是,把 3.8 的小数点向右移 16 位,并在这个过程中根据需要补 0。

如果可以像这里一样,把 16 写作指数,稍稍抬高一点,再写得小一点,科学计数法就很适用。如果你用纸和笔,或者使用一个支持上标的程序,就可以用科学计数法。

术语箱

上标(superscript)是指一个字符或一组字符比其余文本高一些,例如 1013。这里的 13 就是上标。通常上标还要比正文小一点。

下标(subscript)也类似,不过这些字符会比其余文本低,同样也会小一点, 比如 log2。这里的 2 就是一个下标。

不过并不是哪里都能使用上标,所以还有另一种方法,就是 E 记法。E 记法只是科学计数法的另一种写法。

E 记法

在 E 记法中,这个数要写作 3.8E16 或者 3.8e16。读作“3.8 指数 16”或者简读作“3.8 e 16”。这里假设指数是 10 的幂。这就等同于写成 3.8×1016。

在大多数程序和计算机语言(包括 Python)中,大写和小写 E 都是 允许的。

对于非常小的数,如 0.0000000000001752,可以使用一个负指数。科学计数法会写作 1.752×10-13,E 记法会写作 1.752e-13。负指数表示要把小数点向左移而不是向右移。

采用 E 记法,可以在 Python 中输入非常大和非常小的数(或者可以是任何数)。后面我们还会学习如何让 Python 使用 E 记法打印数。

试试采用 E 记法输入一些数:

>>> a = 2.5e6>>> b = 1.2e7>>> print a + b14500000.0  

尽管我们用 E 记法输入了数,但得出的答案却是一个常规的小数。这是因为,除非你特别要求,或者数字确实非常大或非常小(有很多个 0),否则 Python 不会用 E 记法显示数字。

可以试试看:

>>> c = 2.6e75>>> d = 1.2e74>>> print c + d2.72e+75  

这一次 Python 会自动用 E 记法显示答案,因为显示一个有 73 个 0 的数太不可思议了!

如果希望用 E 记法显示类似 14 500 000 的数,需要给 Python 下达一些特殊的指令。我们将在本书的第 21 章学习更多相关内容。

别担心,放松点

如果你还不太理解 E 记法到底是怎么回事,不用担心。这本书后面的程序中不会用到它。我只是想让你了解一下它的原理,没准以后你会用到。

如果使用 Python 来完成一些数学运算,得到的答案是一个类似 5.673745e16 的数,至少现在你知道这是一个非常大的数,而不是出现了什么错误。

指数与 E 记法

不要把自乘得到幂(也称为求幂)和 E 记法弄混了。

  • 3**5 表示 35,或“3 的 5 次幂”,也就是 3 * 3 * 3 * 3 * 3,等于 243。

  • 3e5 表示 3 * 105 或者“3 乘以 10 的 5 次幂”,也就是 3 * 10 * 10 * 10 * 10 *10,结果等于 300 000。

  • 求幂是指一个数自乘得到幂。E 记法表示乘以 10 的几次幂。

有些人可能会把 3e5 和 3**5 都读作“3 指数 5”,不过,它们是完全不同的。怎么读并不重要,只要你懂得它们分别代表什么含义。

你学到了什么

在这一章,你学到了以下内容。

  • 用 Python 如何完成基本数学运算。

  • 整数和浮点数。

  • 求幂(自乘得到一个幂)。

  • 如何计算取余(余数)。

  • E 记法的有关内容。

测试题

1. Python 中乘法使用哪个符号?

2. Python 计算 8 / 3 的答案是什么?

3. 怎么得到 8 / 3 的余数?

4. 怎么得到 8 / 3 的小数结果?

5. Python 中计算 6 * 6 * 6 * 6 的另一种做法是什么?

6. 采用 E 记法,17 000 000 要写作什么?

7. 4.56e-5 如果按常规的写法是什么(不是 E 记法)?

动手试一试

1. 使用交互模式或者编写一个小程序解决下面的问题。

 (a) 3 个人在餐厅吃饭,想分摊饭费。总共花费 35.27 美元,他们还想留 15% 的小费。每个人该怎么付钱?

 (b) 计算一个 12.5m×16.7m 的矩形房间的面积和周长。

2. 写一个程序,把温度从华氏度转换为摄氏度。转换公式是 C = 5 / 9* (F-32)。(提示:当心整除问题!)

3. 你知道怎么计算坐车去某个地方需要花多长时间吗?相应的公式(用文字表述)是“旅行时间等于距离除以速度”。编写一个程序,计算以 80 km/h 的速度行驶 200 km 需要花多长时间,并显示答案。