首页 > 其他分享 >math模块篇(一)

math模块篇(一)

时间:2024-03-29 21:31:53浏览次数:20  
标签:返回 函数 浮点数 整数 模块 print math

文章目录

math.ceil(x)

math.ceil(x) 是 Python 中 math 模块的一个函数,它返回大于或等于给定数值 x 的最小整数。这个函数常被用于取一个数的上限(即向正无穷方向取整)。

例如:

import math

print(math.ceil(4.1))  # 输出: 5
print(math.ceil(4.0))  # 输出: 4
print(math.ceil(3.9))  # 输出: 4
print(math.ceil(-4.1)) # 输出: -4

在上面的例子中,你可以看到 math.ceil() 函数是如何工作的:

  • 对于 4.1,大于或等于它的最小整数是 5。
  • 对于 4.0,本身就是整数,所以返回 4。
  • 对于 3.9,大于或等于它的最小整数是 4。
  • 对于 -4.1,虽然是负数,但仍然返回大于或等于它的最小整数,即 -4。

这个函数在需要向正方向取整数的场景中非常有用,比如在计算资源分配、页数计算、时间计算等情况下。

math.comb(n, k)

math.comb(n, k) 是 Python 中 math 模块的一个函数,用于计算从 n 个不同项中选取 k 个项的组合数。这个函数在 Python 3.8 版本中引入,用于替代早先版本中通过 scipy.special.comb 或其他方式计算组合数的需求。

组合数通常表示为 C(n, k) 或 nCk,它表示从 n 个不同元素中取出 k 个元素(不考虑顺序)的所有可能组合的数量。

数学上,组合数 C(n, k) 定义为:

C ( n , k ) = n ! k ! ⋅ ( n − k ) ! C(n, k) = \frac{n!}{k! \cdot (n - k)!} C(n,k)=k!⋅(n−k)!n!​

其中 n! 表示 n 的阶乘,即 n * (n - 1) * (n - 2) * … * 3 * 2 * 1。

例如,要计算从 5 个不同元素中选取 2 个元素的组合数,可以使用 math.comb(5, 2):

import math

comb_value = math.comb(5, 2)
print(comb_value)  # 输出: 10

在这个例子中,C(5, 2) 等于 10,因为从 5 个不同元素中选取 2 个元素的组合有 10 种可能。

请注意,math.comb(n, k) 函数要求 n 和 k 都是非负整数,并且 0 <= k <= n。如果 k 大于 n,函数将引发 ValueError。此外,由于组合数可能非常大,对于较大的 n 和 k,结果可能会超出 Python 中整数的表示范围。在这种情况下,可能需要使用其他库(如 scipy.special.comb)来处理大数组合数的计算。

math.copysign(x, y)

math.copysign(x, y) 是 Python 中 math 模块的一个函数,它返回一个新浮点数,其绝对值等于 x,但符号与 y 相同。如果 y 是正数或零,则返回的浮点数的符号为正;如果 y 是负数,则返回的浮点数的符号为负。

这个函数在需要复制一个浮点数的绝对值并赋予它另一个浮点数的符号时非常有用。

例如:

import math

print(math.copysign(3.0, 4.0))  # 输出: 3.0,因为 4.0 是正数
print(math.copysign(3.0, -4.0)) # 输出: -3.0,因为 -4.0 是负数
print(math.copysign(3.0, 0.0))  # 输出: 3.0,因为 0.0 被视为正数
print(math.copysign(-3.0, 0.0)) # 输出: -3.0,因为 -3.0 的绝对值与 0.0 的符号相同(即负数)

在上面的例子中,你可以看到 math.copysign() 函数是如何工作的:

  • 当 y 是正数或零时,返回的浮点数的符号与 x 相同。
  • 当 y 是负数时,返回的浮点数的符号与 x 的绝对值相反。

需要注意的是,当 y 是零时,根据 IEEE 754 浮点数标准,math.copysign(x, 0) 将返回与 x 具有相同符号的零。这意味着正零和负零是不同的,但在大多数情况下,它们的行为是相似的。

math.fabs(x)

math.fabs(x) 是 Python 中 math 模块的一个函数,用于返回浮点数 x 的绝对值。这个函数会返回 x 的非负版本,即如果 x 是正数或零,它返回 x 本身;如果 x 是负数,它返回 -x。

例如:

import math

print(math.fabs(5.0))   # 输出: 5.0
print(math.fabs(-5.0))  # 输出: 5.0
print(math.fabs(0.0))   # 输出: 0.0

在这个例子中,math.fabs() 函数分别返回了 5.0、5.0 和 0.0,这些都是相应输入值的绝对值。

这个函数对于需要忽略数的符号而只关心其大小的情况非常有用,比如在比较两个数的大小、计算距离或进行统计分析时。

需要注意的是,math.fabs() 只适用于浮点数。如果你需要处理复数的绝对值,应该使用 cmath 模块中的 abs() 函数。

math.fabs 和内置的 abs 函数之间的主要区别如下:

  • 定义位置:

    • abs 是一个内置函数,不需要额外导入任何模块就可以使用。
    • math.fabs 是在 math 模块中定义的,因此在使用之前需要导入 math 模块。
  • 参数类型:

    • abs 函数可以接受整数、浮点数和复数作为参数,并返回它们的绝对值。
    • math.fabs 函数只接受浮点数(float)和整数(integer)作为参数,并返回它们的绝对值。
  • 返回值类型:

    • abs 函数根据输入参数的类型返回不同类型的值。如果输入是整数,它返回整数类型的绝对值;如果输入是浮点数,它返回浮点数类型的绝对值;如果输入是复数,它返回复数类型的绝对值。
      math.fabs 函数无论输入是什么类型,总是返回浮点数(float)类型的绝对值。
  • 用途:

    • abs 函数由于其灵活性,在多种情况下都很有用,特别是当处理复数时。
    • math.fabs 函数主要用于处理数学计算中的浮点数和整数,它返回的是浮点数类型的绝对值。

总的来说,abs 函数更加通用,可以接受多种类型的参数,而 math.fabs 函数则更专注于浮点数和整数的绝对值计算,并返回浮点数结果。在大多数情况下,如果你只需要处理浮点数和整数,并且希望结果也是浮点数,那么可以使用 math.fabs;如果你需要处理复数或者不关心返回值的类型,那么可以使用 abs 函数。

math.factorial(n)

math.factorial(n) 是 Python 中 math 模块的一个函数,用于计算给定整数 n 的阶乘。阶乘是数学中的一个概念,通常表示为 n!,表示从 1 乘到 n 的所有正整数的乘积。

例如:

import math

print(math.factorial(5))  # 输出: 120

在这个例子中,math.factorial(5) 返回了 5! 的值,即 5 * 4 * 3 * 2 * 1 = 120。

math.factorial() 函数只接受非负整数作为参数。如果参数是负数或非整数,函数将抛出一个 ValueError。

这个函数在组合数学、概率论、统计学以及其他需要计算阶乘的领域中非常有用。例如,在组合数公式 $C(n, k) = n! / (k! * (n - k)!) 中就需要使用阶乘。

请注意,math.factorial() 返回的是一个整数,如果阶乘的结果超出了普通整数的表示范围,可能会导致溢出。在这种情况下,你可能需要使用其他库或方法来处理大数阶乘的计算。

math.floor(x)

math.floor(x) 是 Python 中 math 模块的一个函数,用于向下取整,即返回不大于 x 的最大整数。换句话说,math.floor(x) 将 x 向下舍入到最接近的整数。

例如:

import math

print(math.floor(3.7))  # 输出: 3
print(math.floor(3.2))  # 输出: 3
print(math.floor(-3.7)) # 输出: -4

在这个例子中,math.floor(3.7) 返回 3,因为 3 是小于或等于 3.7 的最大整数。同样,math.floor(3.2) 也返回 3。对于负数,math.floor(-3.7) 返回 -4,因为 -4 是小于或等于 -3.7 的最大整数。

这个函数在需要向下舍入浮点数到整数的场景中非常有用,比如计算分页、分配资源、计算费用等。

需要注意的是,math.floor() 函数的返回值总是整数,即使是对于浮点数输入。如果 x 已经是整数,那么 math.floor(x) 将返回 x 本身。

标签:返回,函数,浮点数,整数,模块,print,math
From: https://blog.csdn.net/d710055071/article/details/137122569

相关文章

  • 1-WIFI&蓝牙(ESP32)转CAN总线&串口TTL模块-CSDK-VSCode开发环境搭建
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ESP32_CAN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 安装串口(CH340)驱动(已经安装的不需......
  • 备战蓝桥杯第三模块之二分模版+二分练题
    前言因本系列是为了蓝桥杯前几天快速过知识点所准备,所以有些部分会很简洁模版整数二分intMid(inta,intb){intl=1;intr=1e9+10;while(l<r){intmid=l+r>>2;if(a/mid<=b)//这儿一般情况下看需要用mid判断什么条件r=mid;elsel=......
  • 备战蓝桥杯第四模块之贪心
    前言本系列只是为了蓝桥杯前几天快速过一遍知识思路遇到贪心想想哪一种方案是最优解。需不需要排序区间选点题目数轴上有n个闭区间,取尽量少的点,使得每一个区间都至少有一个点思路1.优先选择那些终点较早的区间(右端点从小到大排序)2.逐一分析每一段区间是否包含点,如果......
  • (day 22)JavaScript学习笔记(内置对象1之Number、Math、Date)
    概述         这是我的学习笔记,记录了JavaScript的学习过程。在写博客的时候我会尽量详尽的记录每个知识点。如果你完全没接触过JavaScript,那么这一系列的学习笔记可能会对你有所帮助。    今天学习JavaScript内置的对象,主要是Number、Math、Date。1.内置......
  • 深入理解nginx mp4流媒体模块[下]
    深入理解nginxmp4流媒体模块[上]深入理解nginxmp4流媒体模块[中]  以下对各个mp4的加载过程依次进行分析。1.加载ftypatom  加载ftypatom的逻辑由ngx_http_mp4_read_ftyp_atom函数来完成,其最主要的逻辑就是将文件中读取到的ftypatom放到ngx_http_mp4_file_t上......
  • 高效节能的DC电源模块技术探究
    高效节能的DC电源模块技术探究随着科技的不断进步,人们对电源模块的要求也越来越高。在如今的电子设备中,DC电源模块技术被广泛应用,它为各类设备提供了稳定、可靠的直流电源。而在追求高效节能的今天,开发出高效节能的DC电源模块技术则显得尤为重要。 高效节能的BOSHIDADC电源......
  • auth模块
    auth模块(1)介绍其实我们在创建好一个Django项目之后直接执行数据库迁移命令会生成很多表django_sessionauth_userdjango在启动之后就可以直接访问admin路由,需要输入用户名和密码,数据参考的就是auth_user表,并且还必须是管理员用户才能进入(2)创建超级用户(管理员)pythonm......
  • 新写一个jsp项目之一:登录模块
    参考:https://blog.csdn.net/qq_41301333/article/details/131202057一、纯JSP方式实现用户登录功能(一)实现思路登录页面login.jsp,输入用户名和密码后,跳转到登录处理页面doLogin.jsp进行业务逻辑处理,登录成功,跳转到登录成功页面success.jsp,否则跳转到登录失败页面failure.jsp。(二)实......
  • 【selinux】linux的信息安全模块 - selinux
    1.Selinux简介selinux全称(Security-EnhancedLinux)安全增强型Linux,它是一个Linux内核模块,也是Linux的一个安全子系统。2.Selinux的作用及权限管理机制2.1Selinux的作用SELinux主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。2.2DAC在没有使用SE......
  • Python中模块
    基本概念**模块module:**一般情况下,是一个以.py为后缀的文件①Python内置的模块(标准库);②第三方模块;③自定义模块。包package:当一个文件夹下有   init   .py时,意为该文件夹是一个包(package),其下的多个模块(module)构成一个整体,而这些模块(module)都可通过同一个包(packa......