PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Prozentrechnen im Maker



MSG
14.03.2011, 13:17
OMG, ich glaub ich steh grad total auf der Leitung... kA aber irgendwie check ichs grad nicht, ich hoffe ein besser Mathematiker kann mir da helfen :D

Für einen EP-Balken brauch ich die EP in Prozent um den Balken anzuzeigen.

Also Beispiel. Held hat 10 EP und braucht 25 EP fürs nächste Level. Die 10 EP sind dann 40 %. Die Rechnung geht dann ja Prozent = 10 / (25/100) oder?

Aber man kann ja im Maker keine Formeln eingeben. Also mach ich erstmal 25/100 wo das Ergebnis 0,25 wäre und nun die 10/0,25 ergibt dann die 40 %. Allerdings kennt der Maker scheinbar keine Kommazahlen, weil bei der Rechnung 25 / 100 kommt einfach 0 raus.

Bin ich doof? Ich komm mir grad total doof vor. Vorallem weil ich doch schon einmal Balken mit Prozente gemacht hab... Aber grad steh ich total auf der Leitung.

Ich geh mal frische Luft holen....

EDIT:

Lol... Ich könnte ja auch 100*10/25 machen fiel mir auf als ich die Formel grad so gelesen hab und siehe da es kommt dabei auch 40 raus... *doh*

Corti
14.03.2011, 14:20
Jaja, die fiese Integerrechnung frisst Nachkommastellen wie dicke Mädchen Schokoladenriegel.

Rosa Canina
14.03.2011, 15:00
Nimm das "Mal" als erstes und teile danach, dann kommst du auch auf dein Ergebnis ;)

V-King
22.03.2011, 14:02
Nimm den kleinen Wert (in diesem Fall die 10 EP) mal 100. Teile das Ergebnis durch den zuvor größeren Wert (in diesem Fall die 25 EP). Das wäre indiesem Fall also (100*10) / 25
Das Ergebnis ist 40. Setze ein Prozentzeichen dahinter.
Fertig.

Und ja, der Maker kann leider keine Kommazahlen berechnen. Das heißt, du nur ganze Prozentzahlen mit dieser Rechnung berechnen, nach dem Komma wird alles abgeschnitten und auf die nächste Zahl abgerundet.

Corti
22.03.2011, 14:20
Relevante Daten einfach in "Centi-Eineiten" berechnen, also mit 2500 statt 25. Der Maker kann 7 oder 8 Stellen. Wenn man vorne Stellen opfert kriegt man hinten "Nachkommagenauigkeit" , ...nur halt ohne Komma, aber wer braucht das schon?

ToJoK
22.03.2011, 16:52
Es hat jetzt nichts mit Prozentrechnen im Maker zu tun, aber halt mit Rechnen und vielleicht weiß jemand ne Antwort. Für eine Abstandsberechnung brauche ich ne Wurzelfunktion, die gibt es nun aber im Maker nicht. Gibt es da irgendeine andere Möglichkeit den Abstand von 2 Pixelkoordinaten auszurechnen?

Aldinsys
22.03.2011, 17:01
Wieso gibts du denn Abstand nicht einfach in der Quadrateinheit an?

Wenn du also a^2+b^2=c^2 hast, gibst du die Abstände in c^2 an. Du musst deine Bedingungen für die Abstände quadrieren, aber das ist kein Problem. Wofür brauchst du das genau?

Corti
22.03.2011, 17:13
Wofür brauchst du das genau?
Pythagoras fürn Reichweiten/Abstandscheck würd ich mal raten.

Aldinsys hat aber recht, vergleich einfach anders. Du willst wissen ob c > oder < Wert ist, also zieh nicht die Wurzel von c sondern quadriere den Wert.

Andere Mögichkeiten:

PowerPatch samt math-Funktionen
"Schätzer"-Funktion bauen, iterativ rantasten
Look Up Tabelle~
Im Internet nach "Wie löse ich eine Wurzel in Assembler?" suchen und den Algorithmus in den Maker übertragen... ^_^

Cherry
22.03.2011, 19:15
Bzgl. anderer Möglichkeiten:

Die Lookup-Tabelle wäre wohl die am schnellsten einzubauende Methode.

Du kannst mit RMEventFactory (http://www.multimediaxis.de/threads/125440-RMEventFactory-Die-automatische-Eventfabrik!) dir automatisch ein Common Event erstellen lassen, was - z.B. für Werte von 1 bis 1000 - 1000 Forks enthält und jeweils den richtigen Wurzelwert zurückgibt. Das beigelegte Beispiel "sinus.efs" tut dasselbe, du müsstest nur halt statt Sinus die Wurzel berechnen lassen.

ToJoK
23.03.2011, 12:53
Da ich das Ergebnis auch für den Spieler ausgeben möchte, bräuchte ich die Wurzel um auch wirkliche Abstände zu haben unter denen sich der User etwas vorstellen kann. Wie man den Abstand an und für sich berechnet war mir schon klar, sonst hätte ich nicht nach einer alternative zur Wurzelfunktion gefragt. ;)

@Cherry: Danke für den Hinweis, das werde ich zuhause mal ausprobieren, aktuell bin ich nicht an meinem Notebook. Klingt auf jeden Fall sehr vielversprechend für mein Problem.

Rettan
25.03.2011, 15:08
Was ich noch empfehlen kann ist das Heron-Verfahren (http://de.wikipedia.org/wiki/Babylonisches_Wurzelziehen).
Das ist sehr leicht im Maker umzusetzen in einer einzigen Loop-Funktion. Einziges Manko sind da die Fehlenden Nachkommastellen, aber auch dort lässt sich improvisieren: Multipliziere den Wert, von dem du die Wurzel willst mit 100 und dein Ergebnis ist das Wurzelergebnis multipliziert mit 10. (Quasi: Wurzel von 9 -> rechne mit 900 und du bekommst 30 heraus.)

ToJoK
27.03.2011, 14:12
Was ich noch empfehlen kann ist das Heron-Verfahren (http://de.wikipedia.org/wiki/Babylonisches_Wurzelziehen).
Das ist sehr leicht im Maker umzusetzen in einer einzigen Loop-Funktion. Einziges Manko sind da die Fehlenden Nachkommastellen, aber auch dort lässt sich improvisieren: Multipliziere den Wert, von dem du die Wurzel willst mit 100 und dein Ergebnis ist das Wurzelergebnis multipliziert mit 10. (Quasi: Wurzel von 9 -> rechne mit 900 und du bekommst 30 heraus.)

Klingt soweit simpel. Damit die Schleife irgendwann aufhört muss ich sie im Prinzip nach x Durchläufen abbrechen, denn über die Prüfung ob Ergebnis * Ergebnis = x-Wert kriege ich Probleme, sobald die Wurzel nicht genau bestimmt werden kann, also z.B. bei x = 17. Ist wahrscheinlich nicht die schönste Lösung, sieht für mich aber schöner aus als 1000 Abfragen und sterile Wertzuweisungen in der Database stehen zu haben. Danke dafür. :)

Rettan
27.03.2011, 20:33
Das Beenden der Schleife hatte ich einfach mit einer Fork-Condition gelöst. Wenn "Xn+1 == Xn" dann "break loop". Denn dann wird es nicht mehr genauer und das kann teilweise schon nach wenigen Durchläufen der Fall sein, während bei anderen Zahlen die Anzahl deiner festgelegten Durchläufe vielleicht nicht ausreicht. Spart dann außerdem Rechenzeit und -leistung.