<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Thema "Betreff: Ergebnis ist nicht Null" in Programmierung</title>
    <link>https://community.graphisoft.com/t5/Programmierung/Ergebnis-ist-nicht-Null/m-p/637265#M7892</link>
    <description>&lt;P&gt;&lt;a href="https://community.graphisoft.com/t5/user/viewprofilepage/user-id/640"&gt;@runxel&lt;/a&gt;&amp;nbsp;bzgl. Gleitkommazahlen und deren Handhabung in Archicad möchte ich dir gerne widersprechen. Ja, der reelle Zahlenraum hat in der Abbildung innerhalb von Computersystemen Lücken. Aber trotzdem existieren Algebrasysteme, die mit diesen Lücken umgehen können, ohne alles in den Ganzzahl-Bereich verschieben zu müssen. Auch können die verschiedenen C und C#-Bibliotheken das sehr gut. Offensichtlich ist der arithmetische Kern von Archicad so altertümlich, dass alles jenseits von 10^-4 problematisch ist.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;Klar, die Baustelle arbeitet bis max. 5 x 10^-3, im Stahlbau auch gerne etwas genauer, aber das ändert nichts daran, dass Linien sich kreuzen müssen und dass Null eben Null ist, und nicht fast Null.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Aber deine Vorgehensweise mit einem Epsilon ist schon die richtige Lösung, wenn es darum geht diese Altertümlichkeiten zu umschiffen.&lt;/P&gt;</description>
    <pubDate>Sat, 26 Oct 2024 21:41:17 GMT</pubDate>
    <dc:creator>torben_wadlinger</dc:creator>
    <dc:date>2024-10-26T21:41:17Z</dc:date>
    <item>
      <title>Ergebnis ist nicht Null</title>
      <link>https://community.graphisoft.com/t5/Programmierung/Ergebnis-ist-nicht-Null/m-p/636557#M7889</link>
      <description>&lt;P&gt;Moin,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;was habe ich da vergessen oder falsch gemacht?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Das Ergebniss von Wert3 in diesem Script sollte eigentlich 0 sein, ist aber -2.22045e-...&lt;/P&gt;&lt;P&gt;Muss ich das mit INT berechnen oder geht das eleganter.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;EM&gt;wert1=1.2-0.025*2+0.005&lt;/EM&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;EM&gt;text2 0,0,wert1&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;add2 0,-1&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;wert2=21*0.055&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;text2 0,0,wert2&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;add2 0,-1&lt;/EM&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;EM&gt;wert3=wert1-wert2&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;text2 0,0,wert3&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Gruß&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Frank&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" color="grey"&gt;Operating system used: &lt;EM&gt;Windows &lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 21 Oct 2024 16:58:57 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/Ergebnis-ist-nicht-Null/m-p/636557#M7889</guid>
      <dc:creator>Frank Studzinski</dc:creator>
      <dc:date>2024-10-21T16:58:57Z</dc:date>
    </item>
    <item>
      <title>Betreff: Ergebnis ist nicht Null</title>
      <link>https://community.graphisoft.com/t5/Programmierung/Ergebnis-ist-nicht-Null/m-p/636564#M7890</link>
      <description>&lt;P&gt;Float&amp;nbsp;Arithmetik ist ein Biest.&lt;/P&gt;
&lt;P&gt;Das macht nie Spaß, damit zu hantieren (das ist aber kein Fehler von Archicad / GDL, das ist einfach so. Bestimmte Zahlen &lt;EM&gt;kann&lt;/EM&gt; man gar &lt;EM&gt;nicht&lt;/EM&gt; digital abbilden).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Die Frage ist jetzt, was du erwartest, und wozu du das brauchst.&lt;/P&gt;
&lt;P&gt;Die Kurzfassung, um nur den Sonderfall Zahlen nahe Null zu behandeln:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="c"&gt;EPS = 0.0001

if abs(meinWert) &amp;lt; EPS then meinWert = 0.0&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Möchtest du um die Genauigkeit von Gleitkommazahlen generell herumarbeiten:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="c"&gt;EPS = 0.001
wert = 0.123456789
ausgabe = round_int(wert/EPS) * EPS&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Erklärung:&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;wert / eps&lt;/CODE&gt; skaliert den Wert, sodass er in den Bereich von Ganzzahlen fällt (z.B. bei einem Wert &lt;CODE&gt;0.0001&lt;/CODE&gt; als EPS(ilon) wird &lt;CODE&gt;0.123456&lt;/CODE&gt; zu &lt;CODE&gt;1234.56&lt;/CODE&gt; skaliert). Mit der&amp;nbsp;&amp;nbsp;&lt;CODE&gt;round_int(...)&lt;/CODE&gt; Funktion wird kaufmännisch auf die nächste Ganzzahl gerundet. Schließlich wird das Ergebnis wieder mit &lt;CODE&gt;EPS&lt;/CODE&gt; multipliziert, um auf die ursprüngliche Größenordnung zurückzukommen. Meine Nachkommastellen werden die von Epsilon nicht überschreiten.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Oct 2024 20:06:44 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/Ergebnis-ist-nicht-Null/m-p/636564#M7890</guid>
      <dc:creator>runxel</dc:creator>
      <dc:date>2024-10-22T20:06:44Z</dc:date>
    </item>
    <item>
      <title>Betreff: Ergebnis ist nicht Null</title>
      <link>https://community.graphisoft.com/t5/Programmierung/Ergebnis-ist-nicht-Null/m-p/636568#M7891</link>
      <description>&lt;P&gt;Das ganze it ja nur ein Auszug auf einem Script, die Zahlenwerte sind eigentlich variablen. Ist Teil von einem Geländer und berechnet wir der Reste, wenn das gewünschte Rasten nicht aufgeht.&lt;/P&gt;&lt;P&gt;Bei boolean war mir das ja klar, aber das man 0 nicht berechnen kann hatte ich bisher noch nicht wahrgenommen.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Danke für die Nachhilfe Lektion&lt;/P&gt;</description>
      <pubDate>Mon, 21 Oct 2024 21:28:50 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/Ergebnis-ist-nicht-Null/m-p/636568#M7891</guid>
      <dc:creator>Frank Studzinski</dc:creator>
      <dc:date>2024-10-21T21:28:50Z</dc:date>
    </item>
    <item>
      <title>Betreff: Ergebnis ist nicht Null</title>
      <link>https://community.graphisoft.com/t5/Programmierung/Ergebnis-ist-nicht-Null/m-p/637265#M7892</link>
      <description>&lt;P&gt;&lt;a href="https://community.graphisoft.com/t5/user/viewprofilepage/user-id/640"&gt;@runxel&lt;/a&gt;&amp;nbsp;bzgl. Gleitkommazahlen und deren Handhabung in Archicad möchte ich dir gerne widersprechen. Ja, der reelle Zahlenraum hat in der Abbildung innerhalb von Computersystemen Lücken. Aber trotzdem existieren Algebrasysteme, die mit diesen Lücken umgehen können, ohne alles in den Ganzzahl-Bereich verschieben zu müssen. Auch können die verschiedenen C und C#-Bibliotheken das sehr gut. Offensichtlich ist der arithmetische Kern von Archicad so altertümlich, dass alles jenseits von 10^-4 problematisch ist.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;Klar, die Baustelle arbeitet bis max. 5 x 10^-3, im Stahlbau auch gerne etwas genauer, aber das ändert nichts daran, dass Linien sich kreuzen müssen und dass Null eben Null ist, und nicht fast Null.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Aber deine Vorgehensweise mit einem Epsilon ist schon die richtige Lösung, wenn es darum geht diese Altertümlichkeiten zu umschiffen.&lt;/P&gt;</description>
      <pubDate>Sat, 26 Oct 2024 21:41:17 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/Ergebnis-ist-nicht-Null/m-p/637265#M7892</guid>
      <dc:creator>torben_wadlinger</dc:creator>
      <dc:date>2024-10-26T21:41:17Z</dc:date>
    </item>
  </channel>
</rss>

