还记得第1章中将两个非常大的数相乘吗?我们得到的答案也是一个非常大的数。有时Python会用一种稍微不同的方式显示非常大的数,可以在交互模式中试试看:
>>> print 993812345656.34*4823459023067.456
4.79389717413e+025
>>>
(具体键入什么数并不重要–任何包含小数的大数值都可以。)
这个e是计算机中显示非常大或非常小的数时采用的一种方法。这叫做E记法(E-notation)。处理非常大(或非常小)的数时,要把所有数字以及小数位都显示出来可能很费劲。
这种数在数学和科学领域经常出现,例如,如果一个天文程序要显示从专心地球到Alpha Centaur 星的公里数,可能会显示38000000000000000或者38 000 000 000 000 000(38后面有15个0)不论哪种方式,数完所有这些0都会让你累得够呛。
显示这些数还有另一种方式,就是使用科学计数法(scientific notation),就是一个小数再乘以一个10的幂。在科学计数法中,地球到Alpha Centaur 的距离可以写作:3.8 X 1016(看到了吗,16抬高了,而且要小一点)这读作“3.8乘以10的16次幂”或者“3.8乘以10的16次方”。它的意思就是,把3.8的小数点向右移16位,并在这个过程中根据需要补0.
如果可以像这里一样,把16写作指数,稍稍抬高一点,再写得小一点,科学计数法就很适用。如果你用纸和笔,或者使用一个支持上标的程序,就可以用科学计数法。
·术语箱
不过并不是哪里都能使用上标,所以还有另一种方法,就是E记法,E记法只是科学计数法的另一种写法。
·E记法
在E记法中,这个数要写作3.8E16或者3.8e16.读作“3.8指数16”或者简读作“3.8e16”.这里假设指数是10的幂,这就等同于写成3.8 X 1016。
在大多数程序和计算机语方(包括Python)中,大写和小写E都是允许的。
对于非常小的数,如0.00000000000001752,可以使用一个负指数,科学计数法会写作1.752 X 10-13,E记法会写作1.752e-13.负指数表示要把小数点向左移而不是向右移。
采用E记法,可以在Python中输入非常大和非常小的数(或者可以是任何数)。后面我们还会学习如何让Python使用E记法打印数。
试试采用E记法输入一些数:
>>> a = 2.5e6
>>> b = 1.2e7
>>> print a + b
14500000.0
>>>
尽管我们用E记法输入了数,但得出的答案却是一个常规的小数,这是因为,除非你特别要求,或者数字确实非常大或者非常小(有很多个0),否则Python不会用E记法显示数字。
可以试试看:
>>> c = 2.6e75
>>> d = 1.2e74
2.72e+075
>>>
这一次Python会自动用E记法显示答案,因为显示一个有73个0的数太不可思议了!
如果希望用E记法显示类似14500000的数,需要给Python下达一些特殊的指令。我们将在本书的第21章学习更多相关内容。
·指数与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.5e-5如果按常规的写法是什么(不是E记法)?
·动手试一试
1、使用交互模式或者编写一个小程序解决下面的问题。
(a)3个人在餐厅吃饭,想分摊饭费,总共花费35.27美元,他们还想留15美分的小费,每个人该怎么付钱?
(b)计算一个12.5m X 16.7m的矩形房间的面积和周长。
2、写一个程序,把温度从华氏度转换成摄氏度,转换公式是C=5/9*(F-32)。(提示:当心整除问题!)
3、你知道怎么计算坐车去某个地方需要花多长时间吗?相应的公式(用文字表述)是“旅行时间等于距离除以速度”编写一个程序,计算以8 km/h的速度行驶200km需要花多长时间,并显示答案。