命名建议“减去绝对”类型函数

时间:2014-01-16 08:50:40

标签: python math

是否有一个函数的标准函数或数学命名约定,它总是将第一个输入向第二个输入量的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)的符号相反。

1 个答案:

答案 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)

以下是该函数的行为:

  • 如果delta为正,则向零移动。
  • 如果delta是负数,则偏离零
  • 如果number为零,则返回零,因为number没有符号
  • 如果abs(delta)> abs(数字),结果将具有相反的数字符号(超过零)

这是此功能的输入/输出表

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