[ Rounding a number to a smaller or bigger size with the same ratio ]
I don't know how to describe it very well (so I can't look it up) but I need help. Lets say I have 100 out of 0 to 200, how do I ratio the number to 0 to 100 so it would be like 50? Simply ratio-ing the number to a smaller or bigger size?
Answer 1
Calculate the ratio between the original maximum and the new maximum:
double k = (double)newMax / (double)oldMax
In your example you would end up with the value 0.5
.
Then just multiply the value with the ratio:
double newValue = value * k;
If you want an integer value, round it and convert to integer:
int newValue = (int)Math.Round(value * k);
Answer 2
In general, when the minimum is not necessarily 0 on either the 'old' and 'new scales', the solution is the following:
ratio = ( oldValue - oldMin ) / ( oldMax - oldMin )
newValue = newMin + ( newMax - newMin ) * ratio
Answer 3
double myRatio, maxValue, newValue;
//value retrieval logics.
double result = (myRatio / maxValue) * newMaxValue;
u gotta fill the doubles on the first line in. this is the shortest code I'd say.