Frage von YellowEagle, 55

Java int in Range umrechnen?

Hallo, ich habe zb. eine Zahl 10.000 die sich immer ändert zb. durch ein Event in dem immer die aktuelle Pos. durchgegeben wird (zb. die X. Koordinate) aber die Zahle 10.000 die sich immer größer oder kleiner wird ist mir zu groß ich möchte sie zb. in eine Range von 0-50 umrechnen welche Methode muss ich nehmen?

PS: Ich hab in Google nichts gefunden :D

Antwort
von Dereta, 43

Minimal und Maximalwert kennen und dann entsprechend runter rechnen.

z.B min 1 max 100
Umrechnung
1 = 20 / 2 = 40 etcpp. Wenn nötig mit dezimal stellen :) 2,5 = 50

Grüße

Kommentar von YellowEagle ,

Danke :D

Kommentar von YellowEagle ,

Ne habs doch nicht geschnallt ):

Kommentar von MalNachgedacht ,

Also wenn dein Ausgangswert  input  im Bereich minInput bis maxInput liegt und Du möchtest den nun in einen Wert im Bereich minOutput bis maxOutput umrechnen dann kannst Du folgende Formel benutzen

output= (input-minInput) / (maxInput-minInput) * (maxOutput-minOutput) + minOutput;

allerdings mußt Du die Berechnung mit float variablen machen oder die Formel ein bisschen umstellen

Im Prinzip besteht die Formel aus zwei Teilen

Teil 1:

(input-minInput) / (maxInput-minInput)

rechnet den Eingangswert in eine Zahl zwischen 0 und 1 um

Aus dieser Zahl zwischen 0 und 1 macht dann 

Teil 2 der Formel:

* (maxOutput-minOutput) + minOutput;

dann wieder einen Wert im gewünschten Zielbereich.

Wenn minInput und/oder minOutput den Wert 0 haben vereinfacht sich die Formel natürlich ein bisschen

Soll die Berechnung mit int stattfinden (ohne die vorab in float zu wandeln) solltest Du die Formel so schreiben:

output= ((input-minInput) * (maxOutput-minOutput)) 

/ (maxInput-minInput) + minOutput;

Kommentar von YellowEagle ,

Vielen lieben dank ;}

Kommentar von YellowEagle ,

Aber wenn ich nen int raus haben will mit Ihrer Formel dann will er trotzdem das ich float benutze :( Der Code: 

int output = ((event.values[1]-1) * (50-1)) / (20000-1) + 1;
Kommentar von YellowEagle ,

Ne quatsch habs hin bekommen ;D

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten