2013-05-07 12 views
0

Я не знаю, как это описать очень хорошо (поэтому я не могу его найти), но мне нужна помощь. Допустим, у меня есть 100 из 0 до 200, как я могу соотносить число с 0 до 100, так что это будет 50? Просто отношение количества к меньшему или большему размеру?Округление числа до меньшего или большего размера с тем же отношением

+0

Вы попробовали _anything_? Я не вижу здесь никакого вопроса программирования. –

+0

Я не думаю, что это место для этого вопроса, но попробуйте что-то вроде (x-x1)/(x2-x1) * (nx2-nx1), которое относится к чему-то вроде (100-0)/(200-0) * (100-0) –

ответ

-1
((Max - value)/Max) * (newMax) 
+1

№ Это будет работать, только если значение равно половине максимального. Но '(значение/Макс.) * NewMax' будет работать, если min равно нулю. –

2

Рассчитайте соотношение между первоначальным максимумом и новым максимумом:

double k = (double)newMax/(double)oldMax 

В вашем примере вы бы в конечном итоге со значением 0.5.

Тогда просто умножить значение с соотношением:

double newValue = value * k; 

Если вы хотите целочисленное значение, вокруг него и преобразовать в целое:

int newValue = (int)Math.Round(value * k); 
0
double myRatio, maxValue, newValue; 
//value retrieval logics. 
double result = (myRatio/maxValue) * newMaxValue; 

U должен заполнить двойников на первая строка в. это самый короткий код, который я бы сказал.

1

В общем случае, когда минимальное не обязательно 0 либо на 'старой' и 'новые шкалы', решение заключается в следующем:

Отношение = (OldValue - oldMin)/(oldMax - oldMin)

новыйValue = новыйMin + (новыйMax - новыйMin) * соотношение

Смежные вопросы