Switch to full style
Thema gesperrt

AOQML - Gleitkommazahlen und Integer

Mo 05 Okt, 2009 06:14

Hallo,
ich habe ein Problem.
Im Wiki habe ich gelesen, dass die Höhe eines Helden ein Attribut ist, dass die Körpergröße in Metern angibt (also eine gebrochene Zahl):

Attribute
Allgemein
* 'name': der komplette Name des Helden
* 'nick': der falsche Name des Helden
* 'height': seine Größe in Schritt
* 'weight': sein Gewicht in Pfund
[...]


Nun will ich aber eine Zufallszahl haben, die gegen die Körpergröße des Helden getestet wird, also sowas:
Code:
<set name="wassertiefe" val="0..1000"> <!-- wassertiefe in zentimetern -->
<set name="tiefezumstehen" val="${wassertiefe}">
<set name="tiefezumstehen" dec="20">
<set name="koerpergroesse" val="${height}">
<!-- hier will ich nun prüfen, ob der held schwimmen muss oder noch stehen kann! -->


Das Problem ist hierbei:
Ich habe zwei unterschiedliche Zahlentypen - eine Zufallszahl die ein Integer ist ("wassertiefe") und eine Gleitkommazahl ("koerpergroesse")
Um diesen Konflikt zu lösen, müsste ich entweder dies tun:

"koerpergroesse in Zentimeter" = (Integer) "koerpergroesse * 100"

oder das hier:

name="wassertiefe" val="0.0..10.0"> <!-- wassertiefe in Metern -->

Da ich nicht testen kann, was ich schreibe habe ich nun ein Dilemma: Ich weiß absolut nicht, was ich machen soll - Kann mir hier einer von euch erfahrenen Leuten weiterhelfen??? :(

Re: AOQML - Gleitkommazahlen und Integer

Mo 05 Okt, 2009 19:30

Bei PHP ist das alles lax. Der macht eigenständige Typkonvertierung.

Beispiel:

Grösse = 186.8cm = 1.868m
Wassertiefe = 200cm = 2m

Wenn du jetzt einen Vergleich der beiden Werte machst, geschieht in etwa folgendes:

Entweder du hast Grösse = 186cm oder du hast Wassertiefe = 200.0cm. Je nachdem wie der Interpreter die Daten entgegennimmt.

/edit:

Moment, habe wohl was falsch verstanden. Versuch mal das mit <set name="wassertiefe" val="1.0..10.0" />. Das sollte klappen.

Re: AOQML - Gleitkommazahlen und Integer

Mo 06 Sep, 2010 18:09

Der Vollständigkeit halber: Jan hatte irgendwann eval eingebaut, damit sollten alle Rechnungen machbar sein.
Thema gesperrt