Ich habe einen Koordinatenwert (DXF-Code 10):
(10 210.0 501.0 0.0)
und den Fangwert 3.00000. Um zu prüfen, ob DXF-10 genau am Fangpunkt sitzt (= vielfaches von Fang), dividiere ich x-Wert durch Fang - einmal als normale Division mit normalem Ergebnis und dann gerundet auf ganze Zahl.
Code:
(if (= (/ (car ts_10) (car (getvar "snapunit")))
(fix (/ (car ts_10) (car (getvar "snapunit")))))
also hier: 210 / 3 = 70.0 und
210 / 3 = 70 (mit fix gerundet auf ganze)
Alle Mathematiklehrer werden mir zustimmen, dass 70.0 gleich 70 ist. AutoCAD ist anderer Meinung und gibt NIL als Rückgabe von IF aus.
Man könnte einwenden, dass die erste Zahl eine Real ist und die zweite eine Integer. Also mache ich aus der zweiten auch eine Real.
Code:
(if (= (/ (car ts_10) (car (getvar "snapunit")))
(* 1.0 (fix (/ (car ts_10) (car (getvar "snapunit"))))))
Auch hier meint AutoCAD, dass 70.0 nicht gleich 70.0 ist.
Nächster Einwand: "aber die Nachkommastellen .."
Gibt es hier aber nicht: 210.0 hat keine Nachkommastellen, 3.0 auch nicht und 70.0 wird mit rtos und 20 Nachkommastellen auch nur zu "70".
Was ist hier los? Axel hat einmal in einem Posting ausführlich die Problematik "Fliesskomma" usw. behandelt, aber gilt das auch hier? Zwei identische Divisionen die sich glatt ausgehen - und dennoch anders???
Schönes Wochenende
Peter
------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP