2014-01-16 41 views
1

是否存在函數的標準函數或數學命名約定,該函數始終將第一個輸入移動到第二個輸入的數量爲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

的輸入/輸出表是什麼'volume'? – ssm

+0

@ user3135460這將是一個複製和粘貼錯誤;)現在編輯,謝謝 – MarkNS

+1

我會稱它'shift_towards_zero(數字,增量)'。這類似於「趨向於零」或「從無限遠離」。請參閱http://en.wikipedia.org/wiki/Rounding#Round_half_towards_zero。據我所知,這個功能並沒有內置到'數學'庫中。你需要推出自己的。不要將你的函數命名爲reduce,因爲這是Python中的一個內置函數。另外,是'y> = 0'? – IceArdor

回答

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) 

這裏的函數的行爲:

  • 如果增量爲正,轉移到零。
  • 如果增量爲負,從零
  • 移動的路程,如果數量是零,則返回零,因爲數不具有符號
  • 如果ABS(增量)> 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