2013-05-07 41 views
0

我不知道如何描述它非常好(所以我不能查找它),但我需要幫助。可以說我有0到200中的100個,我怎麼把這個數字比作0到100,所以它會是50?簡單地把這個數字與一個更小或更大的大小相比?以相同的比例將數字舍入到更小或更大的尺寸

+0

你試過_anything_嗎?我沒有在這裏看到任何編程問題.. – 2013-05-07 05:56:47

+0

我不認爲這是這個問題的地方,但嘗試像(x-x1)/(x2-x1)*(nx2-nx1) (100-0)/(200-0)*(100-0) – 2013-05-07 05:59:47

回答

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

不需要。只有當數值恰好爲最大值的一半時才能使用。但是,如果min是零,那麼'(value/Max)* newMax'就可以工作。 – 2013-05-07 06:06:07

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; 

ü得上填補了雙打第一行。 這是我說的最短的代碼。

1

一般而言,當最小不一定0上或者 '舊' 和 '新的尺度',解決方案是以下內容:

率=(屬性oldValue - oldMin)/(oldMax - oldMin)

newValue = newMin +(newMax - newMin)*比例