Variablen mit Kommawert

Das Board für Schwierigkeiten beim Adventure-Machen und zum Melden von Bugs
Post Reply
japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Variablen mit Kommawert

Post: # 78902Post japanhonk
26 Mar 2012, 14:34

Hi,

ich müsste mehrere Variablen mit Kommawert berechnen- leider rundet die Engine ja, nur
kann ich das so gar nicht brauchen.

Das Bemühen der SuFu hat leider nix Brauchbares ergeben bisher

Gibts da einen Weg , die Variablen zu nutzen, so
wie sie tatsächlich berechet werden ?
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

Zimond
Der Engine Papa
Posts: 3420
Joined: 06 Apr 2003, 19:34
Location: Krefeld
Contact:

Re: Variablen mit Kommawert

Post: # 78903Post Zimond
26 Mar 2012, 22:53

Bei Berechnungen werden intern immer Kommawerte benutzt und zwischen gespeichert.
So ergibt :

setnum (nummer1 ; 5)
setnum (nummer2 ; 2)
setnum (nummer3 ; [nummer1]/[nummer2]*10)


25 und nicht fälschlicherweise durch runden 20 oder 30.

Nur wenn du Zahlen ausgibst wird der gerundete Wert gezeigt.

Du kannst auch direkt per setnum Kommawerte eintragen indem du sie einfach als brüche ein gibst. In der simpelsten Art einfach immer durch einen Zehner wert teilen. Also um 0.6 in eine Variable zu schreiben einfach setnum (nummer ; 6/10)

Bei if Abfragen sollten auch die Kommawerte berücksichtigt werden, also sollte das beim Skripten auch kein Problem darstellen. Wenn also num1 2,3 und num2 2,4 ist wird if_num (num1 ; <[num2]) auch true ergeben.

Das einzige was du nicht direkt machen kannst ist Kommawerte auszugeben, die werden bei Textausgabe immer gerundet. Das ginge nur in dem du die Zahl um einen Zehnerwert multiplizierst je nach dem wieviele Stellen du hinterm Komma habe willst und die ganze Zahl dann grafisch als Kommawert darstellst. Beispiel :

Deine Berechung endet mit 3,27.

setnum (ergebnis ; [ergebnis]*100) ergibt 327
setnum (teil1 ; [ergebnis]:100) <-- falls du das nicht kennst, der Doppelpunkt als Rechenoperator wirkt wie DIV in der Programmierung, also teilen ohne Rest. Hier wird der Wert 3 gespeichert.
setnum (teil1a ; [teil1]*100) <-- Ergibt 300
setnum (teil2 ; [ergebnis]-[teil1a]) <--- Ergibt 27

setstring (ausgabe ; [teil1],[teil2]) und es erscheint 3,27 im String.
Image

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Variablen mit Kommawert

Post: # 78904Post japanhonk
27 Mar 2012, 07:05

Hey danke , ich schaue mal, was ich davon umsetzen kann.

Vor Allem die Ausgabe ist wichtig, der interne Rechenvorgang muss nur das richtige Ergebnis liefern.

Der Spieler soll durch Kombinieren von Objekten eine
Eingangsfrequenz von 100 Hz auf eine andere Frequenz bringen, die Objekte dienen dabei als Multiplikator mit den Werten 0,7 , 1,5 und 3

für 315 Hz also 100*3 = 300, 300*1,5 = 450, 450/7 =315 -Y Ausgabe für den Spieler = ganze Zahl

Bei der Kombination aller drei 0,7 Multiplikatoren
ergäbe sich dann eben 34,3 und das soll der Spieler
auch angezeigt bekommen.

Ich mach mich dann mal ans Werk.
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Variablen mit Kommawert

Post: # 78905Post japanhonk
27 Mar 2012, 15:28

Rückmeldung :

Nach einigem Basteln ist es gelungen. Funktioniert Prima - Danke !
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

Icebaer3
An Adventure Creator
Posts: 408
Joined: 19 Dec 2012, 20:15
Location: Koblenz

Re: Variablen mit Kommawert

Post: # 83597Post Icebaer3
21 Feb 2017, 12:16

Habe die Sache mit den Komma-Berechnungen gesucht und hier gefunden.

Wäre es nicht sinnig, das mit in die Hilfe des Game aufzunehmen?

(Sollte es da schon drin sein, habe ich nichts gefunden und auch nicht gesagt!)

Zimond
Der Engine Papa
Posts: 3420
Joined: 06 Apr 2003, 19:34
Location: Krefeld
Contact:

Re: Variablen mit Kommawert

Post: # 83598Post Zimond
21 Feb 2017, 16:48

doch, bei "Fortgeschrittenes" steht ein Absatz drin
Rechnen :
Zahlen können mit allen Grundrechenarten berechnet werden.

setnum (berechnung ; [zahl1] + [zahl2] * [zahl3] / [zahl4])

Dabei wird Punkt vor Strich beachtet. Wird die Zahl "Berechnung" als Text ausgegeben wird sie auf einen ganzen Wert gerundert. Intern wird aber der genaue Wert zur Weiterberechnung gespeichert. Durch einen Doppelpunkt kann ohne Rest dividiert werden.
Ich kanns bei den Skriptbefehlen auch noch bei schreiben.
Image

Icebaer3
An Adventure Creator
Posts: 408
Joined: 19 Dec 2012, 20:15
Location: Koblenz

Re: Variablen mit Kommawert

Post: # 83599Post Icebaer3
21 Feb 2017, 16:55

Danke für den Hinweis, aber das hatte ich gefunden. Mir ging es um genau diese Info weil ich einen Wert "setnum (Faktor; 0,2)" nutzen wollte:
Zimond wrote:Bei Berechnungen werden intern immer Kommawerte benutzt und zwischen gespeichert.
So ergibt :

setnum (nummer1 ; 5)
setnum (nummer2 ; 2)
setnum (nummer3 ; [nummer1]/[nummer2]*10)


25 und nicht fälschlicherweise durch runden 20 oder 30.

Nur wenn du Zahlen ausgibst wird der gerundete Wert gezeigt.

Du kannst auch direkt per setnum Kommawerte eintragen indem du sie einfach als brüche ein gibst. In der simpelsten Art einfach immer durch einen Zehner wert teilen. Also um 0.6 in eine Variable zu schreiben einfach setnum (nummer ; 6/10)

Bei if Abfragen sollten auch die Kommawerte berücksichtigt werden, also sollte das beim Skripten auch kein Problem darstellen. Wenn also num1 2,3 und num2 2,4 ist wird if_num (num1 ; <[num2]) auch true ergeben.

Das einzige was du nicht direkt machen kannst ist Kommawerte auszugeben, die werden bei Textausgabe immer gerundet. Das ginge nur in dem du die Zahl um einen Zehnerwert multiplizierst je nach dem wieviele Stellen du hinterm Komma habe willst und die ganze Zahl dann grafisch als Kommawert darstellst. Beispiel :

Deine Berechung endet mit 3,27.

setnum (ergebnis ; [ergebnis]*100) ergibt 327
setnum (teil1 ; [ergebnis]:100) <-- falls du das nicht kennst, der Doppelpunkt als Rechenoperator wirkt wie DIV in der Programmierung, also teilen ohne Rest. Hier wird der Wert 3 gespeichert.
setnum (teil1a ; [teil1]*100) <-- Ergibt 300
setnum (teil2 ; [ergebnis]-[teil1a]) <--- Ergibt 27

setstring (ausgabe ; [teil1],[teil2]) und es erscheint 3,27 im String.
DAS konnte ich aus der kurzen Info bei Fortgeschrittenes nicht so deutlich raus lesen und habe mich daher oft verzettelt. :shock:

Habe mir daher eine Sammlung aus Skripten und Infos hier aus dem Forum angelegt. Und ich suche oft Sachen, die ich vor 2 Jahren mal gefragt habe. Aber find die mal, wenn du das Suchwort nicht mehr weist. :? Darum gings mir eigentlich. :mrgreen:

Zimond
Der Engine Papa
Posts: 3420
Joined: 06 Apr 2003, 19:34
Location: Krefeld
Contact:

Re: Variablen mit Kommawert

Post: # 83600Post Zimond
21 Feb 2017, 20:42

stimmt.. das steht da nicht so deutlich drin.
Image

Post Reply