是否有一个函数的标准函数或数学命名约定,它总是将第一个输入向第二个输入量的0移动。
def reduce(x, y):
if x > 0:
return x - y
elif x < 0:
return x + y
else:
return 0
这似乎是一个非常基本的操作,但我找不到它的任何例子。
如果y为负,则它将从0进一步移动。如果y> x,返回值与x(过冲0)的符号相反。
答案 0 :(得分:3)
我会调用函数shift_towards_zero(number, delta)
。这类似于“向零舍入”或“远离无限远”。见http://en.wikipedia.org/wiki/Rounding#Round_half_towards_zero。据我所知,此功能未内置于math
库中。你需要自己动手。不要将函数命名为reduce
,因为这是Python中的内置函数。
以下是我编写函数的方法:
def shift_towards_zero(number, delta):
return sign(number) * (abs(number) - delta)
以下是该函数的行为:
这是此功能的输入/输出表
number delta result
5 1 4 #delta>0 means shift toward zero
5 11 -6 #overshoot
5 -1 6 #delta<0 means shift away from zero
5 -11 16
-5 1 -4
-5 11 6 #overshoot
-5 -1 -6
-5 -11 -16
5 0 5
-5 0 -5
0 1 0 #shift direction is undefined
0 11 0
0 -1 0
0 -11 0
0 0 0