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 ?
Variablen mit Kommawert
Variablen mit Kommawert
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
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
Re: Variablen mit Kommawert
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.
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.
Re: Variablen mit Kommawert
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.
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
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
Re: Variablen mit Kommawert
Rückmeldung :
Nach einigem Basteln ist es gelungen. Funktioniert Prima - Danke !
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
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de
Re: Variablen mit Kommawert
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!)
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!)
Re: Variablen mit Kommawert
doch, bei "Fortgeschrittenes" steht ein Absatz drin
Ich kanns bei den Skriptbefehlen auch noch bei schreiben.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.
Re: Variablen mit Kommawert
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:
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. 
DAS konnte ich aus der kurzen Info bei Fortgeschrittenes nicht so deutlich raus lesen und habe mich daher oft verzettelt.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.

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.

