正号和负号
一个数的绝对值就是不带正负号的本值。使用fabs()可以计算一个浮点数的绝对值。
新建math_fabs.py文件。
import math
print(math.fabs(-1.1))
print(math.fabs(-0.0))
print(math.fabs(0.0))
print(math.fabs(1.1))
以上代码输出结果为:
1.1
0.0
0.0
1.1
以上代码,在实际中,float的绝对值表示为一个正值。
要确定一个值的符号,以便为一组值指定相同的符号或者比较两个值,可以使用copysign()来设置值的符号。
新建math_copysign.py文件。
import math
HEADINGS = ('f', 's', '< 0', '> 0', '= 0')
print('{:^5} {:^5} {:^5} {:^5} {:^5}'.format(*HEADINGS))
print('{:-^5} {:-^5} {:-^5} {:-^5} {:-^5}'.format(
'', '', '', '', '',
))
VALUES = [
-1.0,
0.0,
1.0,
float('-inf'),
float('inf'),
float('-nan'),
float('nan'),
]
for f in VALUES:
s = int(math.copysign(1, f))
print('{:5.1f} {:5d} {!s:5} {!s:5} {!s:5}'.format(
f, s, f < 0, f > 0, f == 0,
))
以上代码输出结果为:
f s < 0 > 0 = 0
----- ----- ----- ----- -----
-1.0 -1 True False False
0.0 1 False False True
1.0 1 False True False
-inf -1 True False False
inf 1 False True False
nan -1 False False False
nan 1 False False False
以上代码还需要另一个类似copysign()的函数,因为不能将 nan 和 -nan 与其他值直接比较。