Variablen mit Kommawert

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

Variablen mit Kommawert

Post: #78902 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

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

Re: Variablen mit Kommawert

Post: #78903 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

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

Re: Variablen mit Kommawert

Post: #78904 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

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

Re: Variablen mit Kommawert

Post: #78905 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

User avatar
Icebaer3
An Adventure Creator
Posts: 332
Joined: 19 Dec 2012, 20:15
Location: Koblenz
Contact:

Re: Variablen mit Kommawert

Post: #83597 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!)
Image

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

Re: Variablen mit Kommawert

Post: #83598 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

User avatar
Icebaer3
An Adventure Creator
Posts: 332
Joined: 19 Dec 2012, 20:15
Location: Koblenz
Contact:

Re: Variablen mit Kommawert

Post: #83599 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:
Image

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

Re: Variablen mit Kommawert

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

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


Return to “Probleme und Bugs”

Who is online

Users browsing this forum: No registered users and 3 guests