fmod函数python fmod函数怎么用

Python--math库Python math 库提供许多对浮点数的数学运算函数,math模块不支持复数运算,若需计算复数,可使用cmath模块(本文不赘述) 。
使用dir函数,查看math库中包含的所有内容:
1) math.pi# 圆周率π
2) math.e#自然对数底数
3) math.inf#正无穷大∞,-math.inf#负无穷大-∞
4) math.nan#非浮点数标记,NaN(not a number)
1) math.fabs(x)#表示X值的绝对值
2) math.fmod(x,y)#表示x/y的余数,结果为浮点数
3) math.fsum([x,y,z])#对括号内每个元素求和,其值为浮点数
4) math.ceil(x)#向上取整 , 返回不小于x的最小整数
5)math.floor(x)#向下取整,返回不大于x的最大整数
6) math.factorial(x)#表示X的阶乘,其中X值必须为整型,否则报错
7) math.gcd(a,b)#表示a,b的最大公约数
8)math.frexp(x)#x = i *2^j,返回(i,j)
9) math.ldexp(x,i)#返回x*2^i的运算值,为math.frexp(x)函数的反运算
10) math.modf(x)#表示x的小数和整数部分
11) math.trunc(x)#表示x值的整数部分
12) math.copysign(x,y)#表示用数值y的正负号,替换x值的正负号
13) math.isclose(a,b,rel_tol =x,abs_tol = y)#表示a,b的相似性,真值返回True,否则False;rel_tol是相对公差:表示a , b之间允许的最大差值,abs_tol是最小绝对公差,对比较接近于0有用,abs_tol必须至少为0 。
14) math.isfinite(x)#表示当x不为无穷大时 , 返回True,否则返回False
15) math.isinf(x)#当x为±∞时 , 返回True,否则返回False
16) math.isnan(x)#当x是NaN,返回True , 否则返回False
1) math.pow(x,y)#表示x的y次幂
2) math.exp(x)#表示e的x次幂
3) math.expm1(x)#表示e的x次幂减1
4) math.sqrt(x)#表示x的平方根
5) math.log(x,base)#表示x的对数值,仅输入x值时,表示ln(x)函数
6) math.log1p(x)#表示1 x的自然对数值
7) math.log2(x)#表示以2为底的x对数值
8) math.log10(x)#表示以10为底的x的对数值
1) math.degrees(x)#表示弧度值转角度值
2) math.radians(x)#表示角度值转弧度值
3) math.hypot(x,y)#表示(x,y)坐标到原点(0,0)的距离
4) math.sin(x)#表示x的正弦函数值
5) math.cos(x)#表示x的余弦函数值
6) math.tan(x)#表示x的正切函数值
7)math.asin(x)#表示x的反正弦函数值
8) math.acos(x)#表示x的反余弦函数值
9) math.atan(x)#表示x的反正切函数值
10) math.atan2(y,x)#表示y/x的反正切函数值
【fmod函数python fmod函数怎么用】 11) math.sinh(x)#表示x的双曲正弦函数值
12) math.cosh(x)#表示x的双曲余弦函数值
13) math.tanh(x)#表示x的双曲正切函数值
14) math.asinh(x)#表示x的反双曲正弦函数值
15) math.acosh(x)#表示x的反双曲余弦函数值
16) math.atanh(x)#表示x的反双曲正切函数值
1)math.erf(x)#高斯误差函数
2) math.erfc(x)#余补高斯误差函数
3) math.gamma(x)#伽马函数(欧拉第二积分函数)
4) math.lgamma(x)#伽马函数的自然对数
python之数学相关模块 先来看一下 math 模块中包含内容fmod函数python,如下所示fmod函数python:
接下来具体看一下该模块的常用函数和常量 。
ceil(x)
返回 x 的上限fmod函数python,即大于或者等于 x 的最小整数 。看下示例:
floor(x)
返回 x 的向下取整,小于或等于 x 的最大整数 。看下示例:
fabs(x)
返回 x 的绝对值 。看下示例:
fmod(x, y)
返回 x/y 的余数,值为浮点数 。看下示例:
factorial(x)
返回 x 的阶乘 , 如果 x 不是整数或为负数时则将引发 ValueError 。看下示例:
pow(x, y)
返回 x 的 y 次幂 。看下示例:
fsum(iterable)
返回迭代器中所有元素的和 。看下示例:
gcd(x, y)
返回整数 x 和 y 的最大公约数 。看下示例:
sqrt(x)
返回 x 的平方根 。看下示例:
trunc(x)
返回 x 的整数部分 。看下示例:
exp(x)
返回 e 的 x 次幂 。看下示例:
log(x[, base])
返回 x 的对数 , 底数默认为 e 。看下示例:
常量
tan(x)
返回 x 弧度的正切值 。看下示例:
atan(x)
返回 x 的反正切值 。看下示例:
sin(x)
返回 x 弧度的正弦值 。看下示例:
asin(x)
返回 x 的反正弦值 。看下示例:
cos(x)
返回 x 弧度的余弦值 。看下示例:
acos(x)
返回 x 的反余弦值 。看下示例:
decimal 模块为正确舍入十进制浮点运算提供fmod函数python了支持,相比内置的浮点类型 float,它能更加精确的控制精度,能够为精度要求较高的金融等领域提供支持 。
decimal 在一个独立的 context 下工作 , 可以使用 getcontext() 查看当前上下文,如下所示:
从上面的结果中我们可以看到 prec=28,这就是默认的精度,我们可以使用 getcontext().prec = xxx 来重新设置精度 。接下来通过具体示例看一下 。
基本运算
执行结果:
上面结果是用了默认精度 , 我们重新设置下精度再来看一下:
执行结果:
random 模块可以生成随机数,我们来看一下其常用函数 。
random()
返回 [0.0, 1.0) 范围内的一个随机浮点数 。看下示例:
uniform(a, b)
返回 [a, b) 范围内的一个随机浮点数 。看下示例:
randint(a, b)
返回 [a, b] 范围内的一个随机整数 。看下示例:
randrange(start, stop[, step])
返回 [start, stop) 范围内步长为 step 的一个随机整数 。看下示例:
choice(seq)
从非空序列 seq 返回一个随机元素 。看下示例:
shuffle(x[, random])
将序列 x 随机打乱位置 。看下示例:
sample(population, k)
返回从总体序列或集合中选择的唯一元素的 k 长度列表,用于无重复的随机抽样 。看下示例:
参考:
为什么Python中//和math.floor运算结果会不同先说结论:这个问题是由于cpython的地板除运算符(//)的实现不是 浮点除法 floor 来实现而是用了(被除数 - 余数)/除数 导致的 。
PS:Jython下可以得到20.0,而PEP里规定了a // b应该等于round(a/b),所以似乎这是cpython实现的一个bug?
首先先分析下1 / 0.05究竟应该等于多少 。答案就是精确的20.0 。
简单解释下:IEEE754浮点数规定,如果一个浮点数的值不能被精确记录,那么它的值会被记成与这个数距离最近的可以被IEEE浮点数表示的数 。
首先,0.05在二进制下是无限循环小数,自然不能被精确记录,因此0.05这个浮点数的实际值是不等于0.05的,实际值是约为0.052.7e-18 。
之后做浮点除法,实际上做的是1 / (0.05 2.7...e-18),这个除法的结果大约是20 - 1.1e-15 。这个值也不能被精确表示,恰好离这个数最近的可以表示的值就是20.0 , 因此即使有浮点数误差结果也是精确的20.0 。
既然1/0.05就是20.0,那么对他做floor运算自然也是20了 。
现在的问题就是为什么1 // 0.05会变成19.0,要解决这个问题只能翻源码看//运算符的实现 。
直接把cpython/floatobject.c at 829b49cbd2e4b1d573470da79ca844b730120f3d · python/cpython · GitHub 中实现//运算的一段贴上来:
static PyObject *
float_divmod(PyObject *v, PyObject *w)
{
double vx, wx;
double div, mod, floordiv;
CONVERT_TO_DOUBLE(v, vx);
CONVERT_TO_DOUBLE(w, wx);
if (wx == 0.0) {
PyErr_SetString(PyExc_ZeroDivisionError, "float divmod()");
return NULL;
}
PyFPE_START_PROTECT("divmod", return 0)
mod = fmod(vx, wx);
/* fmod is typically exact, so vx-mod is *mathematically* an
exact multiple of wx.But this is fp arithmetic, and fp
vx - mod is an approximation; the result is that div may
not be an exact integral value after the division, although
it will always be very close to one.
*/
div = (vx - mod) / wx;
if (mod) {
/* ensure the remainder has the same sign as the denominator */
if ((wx0) != (mod0)) {
mod= wx;
div -= 1.0;
}
}
else {
/* the remainder is zero, and in the presence of signed zeroes
fmod returns different results across platforms; ensure
it has the same sign as the denominator. */
mod = copysign(0.0, wx);
}
/* snap quotient to nearest integral value */
if (div) {
floordiv = floor(div);
if (div - floordiv0.5)
floordiv= 1.0;
}
else {
/* div is zero - get the same sign as the true quotient */
floordiv = copysign(0.0, vx / wx); /* zero w/ sign of vx/wx */
}
PyFPE_END_PROTECT(floordiv)
return Py_BuildValue("(dd)", floordiv, mod);
}
可以发现cpython中x // y的实现实际上是
round((x - fmod(x, y)) / y)
,其中fmod函数是求两个浮点数相除的余数 。
这样一来就解释的通了:在十进制下,显然1除以0.05的余数应该是0.0 。然而在IEEE浮点数环境中,0.05的实际值是约0.052.7e-18,略大于0.05 , 这样一来1除以这个数的余数就成了约0.05 - 5e-17,从1中减掉这么多之后就只剩0.95了,除以0.05再round后变成19.0 。
python_math模块【1】模块功能
数学相关库
【2】math库
1、math.ceil(x):返回一个大于或等于x的最小整数
print(math.ceil(20.1))
2、math.comb(x,y):返回无重复且无顺序地从x项中抽取y项方式的总和 。
print(math.comb(6,2))
3、math.copysign(x,y):返回基于x的绝对值和y的符号的浮点数 。
print(math.copysign(10,-1))
4、math.fabs(x):返回x的绝对值
print(math.fabs(-10))
5、math.factorial(x):以一个整数返回x的阶乘
print(math.factorial(10))
6、math.floor(x):返回x的向下取整,小于或等于x的整数
print(math.floor(10.1))
7、math.fmod(x,y):返回以y为模,x的余数 。
print(math.fmod(10.1,3))
8、math.frexp(x):将x分解为科学表达式(m*2**e),返回m和e
print(math.frexp(10))
9、math.fsum(x):返回x对象求和 。
print(math.fsum([10,1]))
10、math.gcd(*integers):返回所给整数的最大公约数 。
print(math.gcd(10,6))
11、math.isclose(a,b,rel_tol=,abs_tol=):判断a,b两数是否相近,rel_tol指定相对容差,abs_tol指定绝对容差 。
print(10,7,rel_tol=0.1,abs_tol=0)
12、math.isfinite(x):判断x是否是有限的 。
print(math.isfinite(10))
13、math.isinf(x):判断x是否是无限的 。
print(math.isinf(10))
14、math.isnan(x):判断x是否是NaN
print(math.isnan(10))
15、math.isqrt(x):返回x的整数平方根(向下取整)
print(math.isqrt(10))
【3】random库
1、random.random():返回0-1的随机小数 。
print(random.random())
2、random.randint(x,y):返回大于x小于y的随机整数
print(random.randint(1,10))
3、random.choice(x):返回容器x的随机一个元素
print(random.choice('abcde'))
4、random.choices(x):返回容器x的随机元素,并可以指定权重,及返回的元素个数 。
print(random.choices('abcdefghij',k=6,weights=[0,0,0,0,0,0,0,0,1,1]))
调用fmod函数是什么意思调用fmod函数是
功 能:计算x对y的模,即x/y的求余运算 (参见百科词条mod中的"求余函数" 条目),若y是0,则返回NaN 。
用 法:double fmod(double x,double y);
需要头文件:math.h
在python交互模式下,20÷6的余数怎么表达?在 Python 交互模式下fmod函数python,你可以使用模运算符(%)来表示整数的余数 。例如,要求 20 除以 6 的余数,可以使用如下代码:
模运算1
这里,20 除以 6 的余数是 2 。
注意,模运算符(%)只能用于求整数的余数 , 对于浮点数,它是不适用的 。如果要求浮点数的余数,可以使用内置函数 math.fmod() 。
例如:
模运算2
这里 , 函数 math.fmod() 返回fmod函数python了浮点数 20 除以 6 的余数 2.0 。
fmod函数python的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于fmod函数怎么用、fmod函数python的信息别忘了在本站进行查找喔 。

    推荐阅读