So, there is something going on my nerves for quite some time now:
If you had 0 visits yesterday and any visit today, it shows 100%.
If you had 1 visit yesterday and more than 2 today it shows a value more than 100%.
This is mathematical correct, but in imho a big problem.
Take the following scenario:
Changes are like 0 -> 500 and 1 -> 20. Than it shows 100% for the first and 1900% for the second evolution. Implying that the second one increased more than the first one, which is absolutely wrong.
I do not really have a solution right now, but maybe someone else? Or do you not see a problem with that?
Yeah I know exactly what you mean. Not sure how to fix though, maybe in the UI could show something like "New" but I presume the API would maybe still expect some number or so.
I thought about using
∞ (∞) instead of 100%, but that is also not a valid number, so duh.
I thought about this some more.
Instead of changing the output, it might be better to change the input?
Here it is hard coded to return 100% if the old value (divisor) is 0. Well we could instead provide an arbitrary divisor for the calculation.
I think there are 2 possible arbitrary numbers to choose from:
return Piwik::getQuotientSafe($dividend, 1, $this->quotientPrecision + 2);
Will return the same as if the old value was 1.
return Piwik::getQuotientSafe($dividend, 1.0E-10, $this->quotientPrecision + 2);
Will return a huge number and is easily distinguishable from the old value 1.
What are your thoughts with this? @tsteur
Not really sure what is best here. Maybe @mattab has some thoughts.
Anyway, once I spoke with someone who was in financial business / calculations and told me that if initial value is 0, than whatever next positive value comes up (e.g. next month) it's assumed to be 100%. Because, strictly mathematically speaking, it would be +inf (division by 0). I think it is just an assumption / by convention, depending on department, field etc. By that logic, if you dropped from a positive value to 0, it should be -100% by that very same convention. And, if you think about it, then it makes sense.