abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Programmierung
Alles über Programmierung in GDL und Python

Rundungsfehler bei den Globals

Anonymous
Nicht anwendbar
Phillip Ohm rief mich gerade an und hat mich auf einen Rundungsfehler bei den Globalen Variablen aufmerksam gemacht; speziell geht es um die Geschosshöhen.
Zur Erläuterung eine Grafik von László Nagy (bei Graphisoft.com veröffentlicht).
<img src="http://www.download.b-prisma.de/objekte/Glob_Story.gif" alt=" - " />

Den Fehler bemerkte Phillip, weil das GDL-Objekt "Deckendurchbruch_Symbol.gsm" nicht korrekt funktionierte. Dieses Objekt erstellt z.B. im Keller das Symbol eines Deckendurchbruches und automatisch im Geschoss darüber das Symbol eines Bodendurchbruchs; leider trat der Fehler auf, dass in beiden Geschossen das Deckendurchbruch-Symbol angezeigt wurde.
Phillip kam auf die Idee sich die Globals mit TEXT2 anzeigen zu lassen und die Differenz, die eigentlich Null sein sollte, war ein Wert mit einem Exponenten von 10 hoch minus 16.
<img src="http://www.gdl-talk.de/objekte/Glob_Bug.gif" alt=" - " />

Das Script musste man deshalb minimal verändern, um die Rundungsfehler zu beseitigen.
Statt dem alten Script:
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"> if GLOB_CSTORY_ELEV=GLOB_HSTORY_ELEV+GLOB_HSTORY_HEIGHT then goto 20
würde man (abgekürzt) schreiben:
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">IF Q~<B_+Q_+0.001 AND Q~>B_+Q_-0.001 THEN GOTO 20Danke, Phillip für den Hinweis.

ArchiCAD 9 geht ja etwas anders mit Fliesskommazahlen um. Vergleiche mit selbigen (Z.B. IF A=1.5) werden mit einer Fehlermeldung quittiert. Vielleicht tritt obiger Fehler ja bei AC9 nicht mehr auf.

[ 02. Juli 2005, 22:19: Beitrag editiert von: Jochen Suehlo ]
1 ANTWORT 1
Anonymous
Nicht anwendbar
Dieser Fehler tritt nicht nur bei den GLOBALS auf. V.a. unsere amerikanischen Kollegen haben da schwer dran zu knapsen. Vergleiche mit "=" sind daher immer (!) als Fehlerquelle zu sehen. Hatte das just auch in anderem Kontext. Andere Schreibweise:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">if abs( GLOB_CSTORY_ELEV - (GLOB_HSTORY_ELEV+GLOB_HSTORY_HEIGHT) ) < 0.0001 then ...Die Beschränkung auf 4 Dezimalen besteht innerhalb des GDL-Skriptes nicht, kann also mehr sein!