Как «абсолютно» взять из номера?(Как сместить число?) - PullRequest
2 голосов
/ 18 мая 2019

По сути, мне нужно сделать a - b, но я не знаю, что из этого будет, и если a положительно, то как я могу взять b из a "абсолютно"?

Я имею в виду, например, A = 10 и B = 5. Ответ, очевидно, равен 5. Если A сейчас равно -10, то ответ -5. Ответ склоняется к 0 независимо от того, какие цифры. Я очень хочу избежать использования оператора if, если смогу.

Моей первоначальной идеей было a - (b * (b / abs (b))). Но b может быть 0, и тогда ошибка делится на 0.

РЕДАКТИРОВАТЬ: лучший способ сказать, что я хочу компенсировать результат на сумму вместо математики.

1 Ответ

0 голосов
/ 18 мая 2019

Итак, правильно ли я понимаю, что независимо от значения A вы хотите, чтобы оно смещалось к нулю (на основе начального значения A) на значение B?

Так дано: A = 10 и B = 5, результат будет 5. A = -10 и B = 5, результат будет -5. A = -5 и B = -10, результат будет 5 (потому что он смещен на 10, в направлении нуля от начальной точки -5).

Фактически знак B не имеет значения, поскольку во всех случаях он указывает на смещение к нулю.

Что в случае, когда A = 0 и B не равен нулю? Предполагается, что результат не определен (потому что не может быть выведено соответствующее направление смещения) или он равен нулю?

Формула для последнего случая будет (ABS(A) - ABS(B)) * SIGN(A)) (при условии, что знаковая функция возвращает 0, когда A равно нулю).

...