zoukankan      html  css  js  c++  java
  • Python内置模块之math模块

    what's the math 模块

      Python math 模块提供了许多对浮点数的数学运算函数。需要注意的是,这些函数一般是对平台 C 库中同名函数的简单封装, 所以一般情况下, 不同平台下计算的结果可能稍微地有所不同, 有时候甚至有很大出入。

    主要功能有:

    • 幂数:幂次方、平方根
    • 对数:2、10、e相关的对数操作
    • 圆相关:π、弧度与角度的转换
    • 三角函数:正三角函数、反三角函数
    • 其他常用:小数的整数部分、向上取整、向下取整、两个数的最大公约数、取余数...

    幂数

    幂与平方根

    # pow(x, y):返回x的y次方
    print(math.pow(2, 4))  # 2**4
    
    # ldexp(x, i):返回x*(2**i)的值
    print(math.ldexp(5, 2)) # 5*(2**2)=20.0
    
    # sqrt(x):求x的平方根
    print(math.sqrt(16))  # 4.0
    
    # factorial(x):取x的阶乘的值
    print(math.factorial(5)) # 5*4*3*2*1  # 120
    
    # hypot(x, y):得到(x**2+y**2)的平方根
    print(math.hypot(3, 4))  # 5

    常数e相关

    import math
    
    # 常数e
    math.e # 2.718281828459045
    
    # exp(x):返回常数e的x次方
    math.exp(2)  # 7.38905609893065,相当于math.e**2
    
    # expm1:返回常数e的x次方的值减1
    math.expm1(1)  # 1.718281828459045,相当于math.exp(1) - 1

    对数

    # log2(x):返回x的基2对数
    print(math.log2(128))  # 7
    
    # log10(x):返回x的以10为底的对数
    print(math.log10(100))  # 2
    
    # log(x, base):返回x的自然对数,默认以e为基数,base参数给定时,将x的对数返回给定的base,计算式为:log(x)/log(base)
    print(math.log(256, 4))  # 4
    
    # log1p(x)::返回x+1的自然对数(基数为e)的值
    print(math.log1p(5))

    圆相关

    # pi:常数π,圆周率
    print(math.pi)  # 3.141592653589793
    
    angle = 30 # 30度
    # radians:把角度x转换成弧度
    print(math.radians(angle))  # 0.5235987755982988
    print(30*math.pi/180)  # 效果相同
    
    # degrees:把x从弧度转换成角度
    temp = math.radians(angle)
    print(math.degrees(temp)) # 29.999999999999996

    三角函数

    sin、cos、tan

      math 模块对正三角函数的计算,变量是弧度,所以在计算时需要先将角度转换为弧度

    angle = 30  # 30度
    radian = math.radians(angle) # 角度转换成弧度
    print(math.sin(radian))
    print(math.cos(radian))
    print(math.tan(radian))

    asin和acos和atan

      math 模块对反三角函数的计算,返回值是弧度

    h = math.asin(0.5)  # sin(30) = 0.5
    print(math.degrees(h))  # 30.000000000000004
    
    h = math.acos(0.5)  # cos(60) = 0.5
    print(math.degrees(h))  # 60.00000000000001
    
    
    h = math.atan(1)  # tan(45) = 1
    print(math.degrees(h))  # 45.0

    sinh和cosh和tanh,asinh和acosh和atanh

      双曲正弦、余弦、正切,反双曲正弦、余弦、正切

    其他

    # trunc(x):返回x的整数部分
    print(math.trunc(8.3)) # 8
    
    # ceil(x):取大于等于x的最小的整数值,如果x是一个整数,则返回x
    print(math.ceil(10.2))  # 11
    
    # floor(x):取小于等于x的最大的整数值,如果x是一个整数,则返回自身
    print(math.floor(15.3))  # 15
    
    # fabs(x):返回x的绝对值
    print(math.fabs(-13))  # 13.0
    
    # modf(x):返回由x的小数部分和整数部分组成的元组
    print(math.modf(132.333))  # (0.3329999999999984, 132.0)
    
    # copysign(x, y):把y的正负号加到x前面,可以使用0
    print(math.copysign(10 ,-15))  # -10.0
    
    # fmod(x, y):得到x/y的余数,其值是一个浮点数
    print(math.fmod(15, 2))  # 1.0
    
    # gcd(x, y):返回x和y的最大公约数
    print(math.gcd(8, 100))  # 4
    
    # frexp(x):返回一个元组(m,e),其计算方式为:x分别除0.5和1,得到一个值的范围
    print(math.frexp(10))
    
    # fsum(x):对迭代器里的每个元素进行求和操作
    print(math.fsum([1, 2, 3, 4]))  # 10.0
    
    # isfinite(x):如果x是正无穷大或负无穷大,则返回True,否则返回False
    #
    # isinf(x):如果x是正无穷大或负无穷大,则返回True,否则返回False
    #
    # isnan(x):如果x不是数字True,否则返回False
    print(math.isnan(1.222))

    进阶应用

    计算2个坐标点的距离

    import math
     
    x1 = 0
    y1 = 20
    x2 = 12
    y2 = 0
    
    p1 = (x1, y1)
    p2 = (x2, y2)
    
    result = math.sqrt(math.pow(x1 - x2, 2) +math.pow(y1 - y2, 2))

                            

  • 相关阅读:
    深入浅出 Java Concurrency (4): 原子操作 part 3 指令重排序与happens-before法则
    深入浅出 Java Concurrency (3): 原子操作 part 2
    深入浅出 Java Concurrency (2): 原子操作 part 1
    深入浅出 Java Concurrency (1) : J.U.C的整体认识
    java中关键字volatile的作用
    教你如何迅速秒杀掉:99%的海量数据处理面试题(转)
    STL容器介绍(转)
    IoC框架
    LeetCode 548. Split Array with Equal Sum (分割数组使得子数组的和都相同)$
    LeetCode 533. Lonely Pixel II (孤独的像素之二) $
  • 原文地址:https://www.cnblogs.com/zhuminghui/p/12785085.html
Copyright © 2011-2022 走看看