FAQ |
Kalender |
2009-10-01, 16:12 | #1 | |||
|
||||
Klarade millennium-buggen
|
Det står still i huvudet just nu.
Har följande problem: Jag har ett värde, A, som befinner sig inom ett numeriskt intervall där B1 är det lägsta värdet (kan vara negativt) och B2 är det högsta (kan också vara negativt). Nu vill jag transformera A till dess motsvarighet i ett nytt intervall (C1 är min och C2 är max). Jag skulle kunna räkna mha den procentuella skillnade mellan A och B1 och räkna om den procentuellt mot C1, men det känns inte rätt... eller? Hur skulle en funktion se ut med dessa 5 inparametrar (pseudokod eller gärna c#). |
|||
Svara med citat |
2009-10-01, 16:24 | #2 | ||
|
|||
Flitig postare
|
Din beskrivning är någorlunda vag ... men här är mitt försök.
Kod:
def transform(a, b1, b2, c1, c2): delta_b = b2 - b1 dist_b = a - b1 scale = float(dist_b) / delta_b delta_c = c2 - c1 dist_c = delta_c * scale return c1 + dist_c print transform(2, 0, 10, 0, 1000) |
||
Svara med citat |
2009-10-02, 12:28 | #3 | |||
|
||||
Klarade millennium-buggen
|
Tack, det verkar ju fungera som tänkt (även om jag inte har testat med negativa tal etc)
|
|||
Svara med citat |
Svara |
|
|