首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python - abs vs fabs

Python - abs vs fabs
EN

Stack Overflow用户
提问于 2012-05-27 15:16:40
回答 3查看 136.4K关注 0票数 113

我注意到在python中有两种类似的方法来查找数字的绝对值:

第一

代码语言:javascript
复制
abs(-5)

第二

代码语言:javascript
复制
import math
math.fabs(-5)

这些方法有何不同?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-27 15:21:00

如果可以,math.fabs()将其参数转换为float (如果不能,则抛出异常)。然后它获取绝对值,并以浮点数的形式返回结果。

除了浮点数之外,abs()还可以处理整数和复数。它的返回类型取决于其参数的类型。

代码语言:javascript
复制
In [7]: type(abs(-2))
Out[7]: int

In [8]: type(abs(-2.0))
Out[8]: float

In [9]: type(abs(3+4j))
Out[9]: float

In [10]: type(math.fabs(-2))
Out[10]: float

In [11]: type(math.fabs(-2.0))
Out[11]: float

In [12]: type(math.fabs(3+4j))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/home/npe/<ipython-input-12-8368761369da> in <module>()
----> 1 type(math.fabs(3+4j))

TypeError: can't convert complex to float
票数 134
EN

Stack Overflow用户

发布于 2012-05-27 15:22:25

math.fabs()总是返回float,而abs()可能返回integer。

票数 3
EN

Stack Overflow用户

发布于 2018-02-05 21:46:21

abs():根据参数返回绝对值,即如果参数为整型,则返回整型;如果参数为浮点型,则返回浮点型。此外,它还适用于复杂变量,即abs(a+bj)也适用并返回绝对值,即math.sqrt(((a)**2)+((b)**2)

math.fabs():它只对整数值或浮点值有效。无论参数类型是什么(复数除外),始终返回绝对浮点值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10772302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档