Seite 2 von 3
Verfasst: 05.10.2004 15:42
von Lars
@coldarchon
Du willst damit doch wohl nicht etwa sagen, dass es ganz normal sei, dass
man, um zwei Variablen zu vergleichen, selbige erst selber von Hand in
ein sinnvolles Format umwandelt
Aber lassen wir das geflame, jeder behält vielleivht am einfachsten seine
Meinung und alle sind glücklich

Verfasst: 05.10.2004 15:57
von Zaphod
naja, es währe auf jeden fall nett, wenn der compiler eine freundliche warnung ausgeben würde, dass man da grade wahrscheinlich murks macht, so wie das ein guter c compiler tut ^^
Verfasst: 05.10.2004 16:36
von Ynnus
@ freedimension:
Es geht aber auch darum, dass man eine Bedingung mit Float-WOrd machen könnte, aber wenn man 2 hat und per AND verknüpft, dann geht es nicht mehr. WARUM? Wieso behandelt der Compiler das anders als 2 einzelne Zeilen?
Dass die ständigen Fragen zu "Warum sind Floats ungenau" dich nerven kann ich nachvollziehen, aber hier liegt wohl klar ein Bug vor, wenn er beide Operationen einzeln machen kann, beide mit AND aber nicht.

Verfasst: 05.10.2004 17:27
von AndyMars
Na, na...
die ewigen Float-Fragen
Es geht hier nicht nur um Floats! Ich kann mit den Restriktionen von den PB Floats durchaus leben, freue mich natürlich auch auf ein PB 4... Der Punkt hier ist meiner Meinung nach aber ein anderer: Ich hätte ja auch nichts dagegen, wenn es so wäre, dass ich Float mit Word (oder Long) nicht vergleichen könnte. Aber offensichtlich scheint es ja doch möglich zu sein, wie die aufgeteilten Vergleiche es ja zeigen - wäre es anders, erwartete ich schon da eine Fehlermeldung oder zumindest ein "seltsames Ergebnis". Aber nein: 100 >= 39.000000 ergibt True... Das scheint mir soweit durchaus korrekt. Aber warum (vereinfacht gesagt) "True AND True" False ergibt - das hat doch nichts mehr mit den Floats zu tun. Oder?
Edit: Tja, tja - Zaphod & Sunny waren schneller

. Ich hatte wohl gleichzeitig noch zuviele andere Dinge zu tun...
In Tat und Wahrheit braucht jedes Wort, welches ich schreibe, einige Minuten, um vom Mars zur Erde zu gelangen - deshalb brauch ich immer so lange, um eine Antwort zu schreiben ; )
Verfasst: 06.10.2004 11:21
von bvc
Auch wenn das Thema nervt, wie bekomme ich 38.40 und nicht 38.400002 in meine float variable? (siehe mein Beispiel auf der ersten Seite)
Verfasst: 06.10.2004 11:33
von freedimension
freedimension hat geschrieben:
Jungs, könnt ihr bitte bitte bitte die Suchmaschine bemühen (auch altes Archiv) bevor ihr immer wieder das alte Thema auf den Tagesplan holt. Oder lest mal zur Abwechslung die Hilfe oder ein gutes Informatikbuch, den Programmieren ist mehr als nur Befehle schreiben, Programmieren ist vor allem eines: Verstanden haben
Was genau war da jetzt nicht zu verstehen?
Suche im alten Forum ergab innerhalb von 1 Minute dieses Ergebnis (viel Spass beim LESEN)
http://www.robsite.de/php/pureboard-arc ... 67&start=0
Verfasst: 06.10.2004 11:45
von bobobo
bvc hat geschrieben:Auch wenn das Thema nervt, wie bekomme ich 38.40 und nicht 38.400002 in meine float variable? (siehe mein Beispiel auf der ersten Seite)
auf die Letzte Stelle kannst Du pfeifen
Code: Alles auswählen
wert.f=120
prozent.f=32
erg.f=wert*prozent/100
Debug erg ; --> 38.400002
str_erg.s=StrF(erg,2)
Debug str_erg ; --> 38.40
nachkomma.f= ValF("0."+StringField(str_erg,2,"."))
Debug nachkomma ; --> 0.400000
vorkomma.f=Val(StringField(str_erg,1,"."))
Debug vorkomma ; --> 38.000000
erg2.f=vorkomma+nachkomma
Debug erg2 ; --> 38.400002
Debug "So geht das"
Debug StrF(erg2,5) ; --> 38.400002
Verfasst: 06.10.2004 12:05
von Zaphod
@bvc:
da solche kleinen wertunterschiede aber schnell wieder an einer nichtoffensichtlichen stelle flöten gehen, sollte man damit aber garnicht erst rumrechnen.
Verfasst: 06.10.2004 15:55
von Ynnus
freedimension hat geschrieben:freedimension hat geschrieben:
Jungs, könnt ihr bitte bitte bitte die Suchmaschine bemühen (auch altes Archiv) bevor ihr immer wieder das alte Thema auf den Tagesplan holt. Oder lest mal zur Abwechslung die Hilfe oder ein gutes Informatikbuch, den Programmieren ist mehr als nur Befehle schreiben, Programmieren ist vor allem eines: Verstanden haben
Was genau war da jetzt nicht zu verstehen?
Suche im alten Forum ergab innerhalb von 1 Minute dieses Ergebnis (viel Spass beim LESEN)
http://www.robsite.de/php/pureboard-arc ... 67&start=0
Darum geht es doch garnicht! Ich weiß doch dass Floats manchmal ungenau runden. Im gennanten Link geht es doch darum, dass 2 Float Werte ungenau zusammenaddiert werden.
Aber in meinem Fall geht es doch garnicht um Rundungsfehler oder soetwas. Sondern schlichtweg darum, dass 2 If-Bedingungen einzeln funktionieren. Verknüpft mit AND geht es nicht mehr. DIE FLOATS GEHEN DOCH, ICH BESCHWÄRE MICH JA GARNICHT ÜBER RUNDUNGDFEHLER, NUR MAN KANN EBEN NICHT 2 BEDINGUNGEN (EINZELN FUNKTIONIEREN SIE) HINTEREINANDER MIT AND VERKNÜPFEN!
Sorry dass ich das jetzt so sagen muss, aber du verwechselst meine Problematik schlichtweg mit einer anderen. Es geht ja nicht um Rundungsdinge oder Binär-Ungenaueigkeiten sondern um die Tatsache dass es eigentlich geht, (Und PureBasic das auch kann!!), aber wenn man 2 dieser Bedingungen verknüpft tritt ein Fehler auf. (Obwohl man beide doch einzeln betrachten könnte und beiden dann gehen würde. Somit vermischt der Compiler da irgendetwas, was am Ende dann einen Fehler produziert).
Verfasst: 06.10.2004 16:24
von freedimension
Den Post hast du ja auch nicht dir zu verdanken Sunny, mach dir da mal keine Sorgen
