Ergebnis 1 bis 11 von 11

Thema: das NICHTrunden von variablen umgehen?

  1. #1

    das NICHTrunden von variablen umgehen?

    aloha,

    einen ähnliches thema gabs hier schonmal, ist aber nicht ganz in meine richtung.
    und zwar ist es so, dass der rpg maker nicht in der lage ist aufzurunden, das heißt, wenn man irgendwas dividiert, und es kommt zB eine 8,7 raus, macht er eine 8 draus.

    mein problem ist, dass ich eine prozentrechnung auf einen satuswert projizieren möchte.

    bei geraden zahlen ist das kein problem: 100 x 120 / 100 = 120

    nimmt man 101, kommt man auf 121, das problem ergibt sich beim zurückrechnen: 121 x 100 / 120 = 100,83

    -->der rpg maker macht daraus eine eine 100, der ausgangswert ist also verfälscht ._.

    am liebsten wäre mir, wenn es eine rechnung gibt, die das umgeht, aber man darf mich auch mit vorschlägen die variable alternativ zu speichern oder sowas behäufen ^^

    ...ring frei

  2. #2
    Wenn die Zahlen nicht zu groß sind, kannst du sie vorher mit 10 multiplizieren. Dann hast du quasi eine Nachkommastelle. Die kannst du dann manuell runden ( if zahl mod 10 > 5 then zahl +=10 end ) und das Ergebnis dannach wieder durch 10 dividieren.

  3. #3
    entweder die nachkomma-stellen lösung, mit *10 oder *100, je nachdem wie viele stellen man braucht.
    oft reicht es ja 5 stellen + 2 nach dem komma zu haben.
    (wär wohl auch ne idee, das auf 7 variablen aufzuteilen so dass du 7 + 7 stellen hast... muss ich später mal durchdenken.)

    oder du arbeitest mit ieinem patch, der gleitpunktzahlen hinbekommt. also dem power patch (LUA), oder dyn-rpg (C Plugins).

    Oder(imo die beste Lösung - aber nicht für jedes problem anwendbar) du schreibst die Bruchrechnung.
    Stellst also jede Variable durch zähler und nenner dar. Machst alle deine rechenoperationen und rundest dann ganz am schluss.

  4. #4
    Zitat Zitat von Rettan Beitrag anzeigen
    Wenn die Zahlen nicht zu groß sind, kannst du sie vorher mit 10 multiplizieren. Dann hast du quasi eine Nachkommastelle. Die kannst du dann manuell runden ( if zahl mod 10 > 5 then zahl +=10 end ) und das Ergebnis dannach wieder durch 10 dividieren.
    war wieder mal ne einfach lösung auf die ich nicht kam, danke ^^

  5. #5
    klappt soweit nach rettans vorschlag, aber nochmal eine ergänzung. ich hab wie es der zufall will 3 events, die man separat aktivieren kann: HP + 10%, HP + 20%, HP + 30%

    wenn man daran rumspielt, ergeben sich probleme beim hin und her rechnen.

    ich poste einfach mal den code:

    Klicke auf die Grafik für eine größere Ansicht 

Name:	22.06.png 
Hits:	41 
Größe:	24,4 KB 
ID:	14221

    die events haben jeweils 2 seiten, auf der ersten werden die % dazugerechnet, die ability ausgerüstet, auf der 2. das gegenteil.

    zur erklärung: es geht also los:
    - *11(12, 13)
    - addition der gespeicherten zehntel
    - mod, ermittlung des zentelwertes, per alternativ variable
    - zehntelwert wird 0 gesetzt, falls 0 rauskommt, also der vorhergehende wert, wird gelöscht sozusagen
    - dann wird abgefragt, was bei dem mod rauskommt, ab 5 wird das was zur zehn fehlt addiert, gleichzeitig im zentelwert alsm minuswert gespeichert, damit sich die rundungen nicht addieren und irgendwann wieder ganze zahlen ergeben, ist der wert 4 oder kleiner, wird er als positiv gespeichert, weil der rpg maker ihn dann ja einfach untern tisch fallen lässt, sozusagen
    - und zum schluss wird entsprechend wieder durch 10 dividiert und es sollte der korrekte endwert rauskommen



    das problem ist jetz, es funktioniert FAST, nur ganz selten kommt es mal zu einer abweichung, ich bin leider aber nach vielen stunden die ich mit diesem scheiß verbracht hab, FAST dabei es hinzuschmeißen, eine einfachere lösung gibt es ja immer xD meine bitte ist jetz eigentlich, dass einfach mal jemand drüber schaut, ob es zumindest von der logik her stimmt, ich hab es immer mit einem wert von 2222 getestet, und unter bestimmten konstellationen komm ich dann beim rückrechnen auf 2221.

  6. #6
    bisschen runden muss man doch immer, wenn man nicht exakt ist. *weisheiten des lebens*
    Wo ist das problem darin, dass 2222 und 2221 den selben endwert geben?

  7. #7
    Freunde dich bitte mit Destiny an, wird dir gefallen. Das Ding gibt dir neben vielen anderen
    Dingen auch Gleitkommavariablen (\f[n]).

    Achtung, du solltest besser alles was du in einen Float hineinrechnest auch als Float
    bereits einspeissen, sonst funktioniert die Rechnung nicht korrekt, hatte neulich das
    Problem und musste einiges auswechseln.

  8. #8
    Zitat Zitat
    Wo ist das problem darin, dass 2222 und 2221 den selben endwert geben?
    das problem ist, dass der endwert nicht den selben ausgangswert ergibt, also manchmal 2222, manchmal aber auch 2221 oder 2223. der endwert variiert auch manchmal zwischen 3812, 3813 und sowas, aber das ist okay, da es meistens dann korrekt zurückgerechnet wird und 2222 rauskommen.


    Zitat Zitat
    Freunde dich bitte mit Destiny an, wird dir gefallen. Das Ding gibt dir neben vielen anderen
    Dingen auch Gleitkommavariablen (\f[n]).

    Achtung, du solltest besser alles was du in einen Float hineinrechnest auch als Float
    bereits einspeissen, sonst funktioniert die Rechnung nicht korrekt, hatte neulich das
    Problem und musste einiges auswechseln.
    ich benutze eigentlich ungern patches. klar bringen die immer irgendwelche tollen sachen, aber ich würd gern weitestgehend bei der original software bleiben. ich hab ja auch noch andere rechnungen in dem spiel untergebracht, wo ich vielleicht auf das runden des rpg makers angewiesen bin, weiß nicht und das könnte zunichte sein, wenn plötzlich nicht mehr so gerundet wird, bin aber auch nicht darin interessiert das alles zu prüfen.

    was ist ein float? is das auf mein script bezogen?


    PS: vom schicksal hab ich noch nie viel gehalten ^^

  9. #9
    Zitat Zitat
    was ist ein float? is das auf mein script bezogen?
    Nur ein anderer Begriff für die Kommazahlen.

    Und die sind völlig von den Variablen abgetrennt, ich kanns wirklich nur bestens empfehlen,
    es zu nutzen, wenn komplizierte Rechnungen unverzichtbar sind. Rundungsfunktionen kannst
    du auch jederzeit an den Dingern ausführen oder auch einfach nur normale Variablen verrechnen
    lassen das ist alles kein Problem.

  10. #10
    ich bin dann irgendwie geneigt das ganze zu vereinfachen und feste werte zu nehmen. trotzdem danke o.o

  11. #11
    warum muss man immer so dumm sein?

    set HP = alternativvariable , *10/20/30 / 100
    gesamt HP + alternativvariable ....beim rückrechnen einfach wieder abziehen -.-

    muss man jeden statuserhöher in einer extra variable speichern, aber darauf is geschissen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •