Ad Widget

Collapse

Проценты и деление на ноль.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Alex_UUU
    Senior Member
    • Dec 2018
    • 541

    #1

    Проценты и деление на ноль.

    Коллеги, приветствую.
    Что-то зациклился ми не могу выйти :-)

    Есть величина (элемент данных) А и ЭД B
    Ну и надо сделать ЭД C - расхождение в процентах. Вроде все легко (last опускаем, чтобы не путаться)
    (A -В)/А *100. Отлично, кроме случае, A=0
    выкрутимся
    (A-B)/(A+0.001)*100 - Будет большая величина, но это нормально. Устраивает.
    Но что делать, если и A и B равны нулю? Как получить 0 в итоге?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Элемент данных С - вычисляемый?
    Сейчас самый простой выход - это просто написать формулу "в лоб" (вроде (A-В)*100/А) и добавить шаг предобработки с проверкой на неподдерживаемое значение: если стало неподдерживаемым (что произойдёт в случае нулевого А), то предпринять соответствующие действия - либо заменить подходящим значением (0, 100, 1000, -1 или что вам больше нравится), либо просто отбросить.

    До этого применялся подход, основанный на том, что результат логического выражения - это либо ноль, либо единица. Например, чтобы в случае А=0 получить в результате просто ноль, а не ошибку "деление на ноль", формула строилась более громоздкой, но дающей результат:
    Code:
    ((A<>0) * (A-В) * 100)/(А + (A=0))
    Т.е. числитель домножаем на (A<>0) (что даёт единицу в обычной ситуации и поэтому не вляет на результат, но обнуляет итог в случае если A=0), а в знаменатель добавляем (A=0) (что обычно даёт ноль и поэтому тоже не влияет на результат, но если А таки равен нулю, то уберегает от деления на ноль).

    Comment

    Working...