О тонкостях вычисления относительной ошибки
.
Когда я вижу -100%, то это означает обнуление. Если перепутать в числителе местами переменные (или знак), то может создаться такая путаница.
Функция relative(approx,exact)=(exact-approx)/abs(approx)
Так relative(1,2) выдаст 1, а relative(2,1) выдаст -1/2. При этом approx это приближённое значение, а exact точное. Можно использовать и для значений во времени, где approx это прошлое значение, а exact настоящее. Так, если relative умножить на 100, то получим для роста из 1 в 2 +100%, а для уменьшения из 2 до 1, -50%. То есть 1 увеличивается на 100% и 1+1=2, но 2 уменьшается на 50% от 2=1, то есть на 1, и становится 2-1=1.
Можно прибавить к relative 1 и получится дробь (назовём отношением или разами), которая означает увеличение, если больше 1 (так 1.01 это 1% увеличения), и уменьшение, если меньше 1. Так 0.99 это уменьшение на 1%.
Отношение можно преобразовать в проценты так: (r-1)*100. А из процентов в дробь отношения p/100+1.
Так, если есть 1000 и мы умножим на 1.04, то получим 1040 (40=1000*0.04), но, если разделим на 1.04 (думая получить -4% или 96%), то получим 961.53 (должно быть 960 при p=-4, и оно таким является при p=-4, но не при 1/1.04). Таким образом, правильное преобразование из r в обратное не 1/r, а 2-r.
Так 150% это отношение 2.5 (5/2), и если мы умножим 1000 на 2.5, то получим 2500 (увеличение на 150%), а если возьмём обратное значение -150%, то это будет не 2/5=1/(5/2), а 2-5/2=-1/2, то есть то, что умножив на 1000 будет -500 рублей, а не +400.
Если же мы хотим представить уменьшения 1000 в 2.5 раза, то это будет -60% = 100 ((1/2.5)-1)% = -(100*150)/(100+150)%. Тогда, как увеличение в 2.5 раза это, по-прежнему, 2500.