上一篇讲了 math 库,但是由于篇幅原因,还有很多内容没有讲完,我们再整篇续集,完成未了的使命!
floor(), ceil()有时候我们会需要使用取整操作,例如计算用几个瓶子装水时的向上取整、一年大概多少星期的向下取整:
import mathx = 3.14print(math.ceil(x))# Output: 4print(math.floor(x))# Output: 3trunc()某些情况下,我们只要一个数字的整数部分,就可以使用 trunc() 来将小数部分丢弃:
import mathprint(math.trunc(5.999))# Output: 5然而,这个函数个人觉得比较鸡肋,因为有很多替代方法:
floor()int():将一个数字转换为整数时,系统会强制抛弃后面的小数import mathprint(math.floor(5.999))# Output: 5print(int(5.999))# Output: 5round()round() 函数其实不算是 math 的库函数,只是这里在讲数学,且保留位数很常用,因此废话一嘴。
round(小数, 位数) 用于将小数按照传入的位数要求,四舍五入为目标位数结果:
print(round(3.1415926, 2))# Output: 3.14print(round(3.1415926, 4))# Output: 3.1416我们常见的对数运算有 ,在 math 中也定义了这些对数计算:
log(x):自然对数,即 log(a, b):以 b 为底数的 a 的对数,即 ,省了用换底公式的麻烦log10(x):log2(x):import mathprint(math.log(math.e))# Output: 1.0print(math.log(36, 6))# Output: 2.0print(math.log10(100))# Output: 2.0print(math.log2(16))# Output: 4.0阶乘是一种数量级快速增长的计算:
注意,阶乘只能是非负整数,且定义了 :
import mathprint(math.factorial(5))# Output: 120print(math.factorial(0))# Output: 1modf() 能将数字的整数和小数分开,并以元组形式返回,但这同样也比较鸡肋,因为有多种方法可以实现同样操作:
import mathprint(math.modf(3.14))# Output: (0.14000000000000012, 3.0)print(3.14 - int(3.14), int(3.14))# Output: 0.14000000000000012 3💡 注意:不知道大家有没有发现,本来是 0.14,却得到了 0.1400..12,这其实跟计算机存储小数的方式有关系,我们后续单独开篇章来讲。
三角函数中,最需要注意的就是角度与弧度问题。它们是从不同层面对一个角的大小进行的定义,设 为角度, 为弧度,其转换公式为:
例如 。
math 则内置定义了转换函数:
import math# 角度转弧度print(math.radians(180))# Output: 3.141592653589793# 弧度转角度print(math.degrees(math.pi))# Output: 180.0正余弦、正与切我就不多说了,不知道的去问问自己的数学老师!
import mathrad = math.radians(30)print(math.sin(rad))print(math.cos(rad))print(math.tan(rad))往期回顾: