| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
|
Autor
|
Thema: rätselhaftes rem (722 mal gelesen)
|
flaschenpost Mitglied Architekt
 
 Beiträge: 497 Registriert: 29.09.2004 ADT 2004 / Windows XP
|
erstellt am: 28. Dez. 2004 13:42 <-- editieren / zitieren --> Unities abgeben:         
Hallo LISPler, wer kann das Rätsel mit rem lösen ? Eigentlich könnte man rem gut zum Runden nutzen ... (rem 13 4) ergibt 1 (rem 12 4) ergibt 0 ... so haben wir das auch erwartet.
(rem 2.0 0.5) ergibt 0 ... genau ! (rem 1.0 0.1) ergibt .1 ... aber was ist das ? (rem 2.0 0.2) ergibt .1999999999999999 ... es wird ja immer verrückter, (rem 9.0 0.3) ergibt .0000000000000003 ... und das erst ! (rem 0.2 0.1) ergibt 0 ... endlich klappt es - (rem 0.9 0.3) ergibt .0000000000000001 ... oder doch nicht ?
Gruß Carsten
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
    
 Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, ..., AutoCADs 200X, SWX 2kX
|
erstellt am: 28. Dez. 2004 14:18 <-- editieren / zitieren --> Unities abgeben:          Nur für flaschenpost
The el allmighty onlinehelp said once: Return Values A number. If any number argument is a real, rem returns a real; otherwise, rem returns an integer. If no arguments are supplied, rem returns 0. If a single number argument is supplied, rem returns number. So ist es leider oder auch gottsei dank der einfach dabei achten ob die Funktionsargumente auch alle keine Reals bzw. Ints sind. ------------------ "Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?" Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
autocart Mitglied Technischer Redakteur
  
 Beiträge: 698 Registriert: 08.09.2003
|
erstellt am: 29. Dez. 2004 08:40 <-- editieren / zitieren --> Unities abgeben:          Nur für flaschenpost
tja, ich versteh' proxys Antwort auch nicht. zb bei (rem 1.0 0.1) müsste ja 0.0 rauskommen und nicht .1 dass es eine real ist ist ja ok, aber das Ergebnis ist schlicht und einfach falsch. Grüße, Stephan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hedonis Mitglied Ja

 Beiträge: 11 Registriert: 01.12.2004 Windows 2000/SP3 AutoCAD 2004/SP1a Hp DesignJet 800
|
erstellt am: 29. Dez. 2004 10:25 <-- editieren / zitieren --> Unities abgeben:          Nur für flaschenpost
interessant, weil es teilweise andere, aber trotzdem falsche ergebnisse bei mir gibt: (rem 2.0 0.1) 0.1 (rem 0.9 0.3) 5.55112e-017 (rem 9.0 0.3) 3.33067e-016 hat das was mit der zahlendarstellung im acad zu tun? ------------------ Wer einen Fehler findet, darf ihn behalten. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flaschenpost Mitglied Architekt
 
 Beiträge: 497 Registriert: 29.09.2004 ADT 2004 / Windows XP
|
erstellt am: 29. Dez. 2004 10:57 <-- editieren / zitieren --> Unities abgeben:         
Wegen der besseren Darstellung habe ich alles mit rtos und 16 Stellen in Zeichenketten konvertiert, die Ergebnisse müßten überall gleich (falsch) sein. Nach der Hilfe sind reelle Zahlen bei rem erlaubt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
autocart Mitglied Technischer Redakteur
  
 Beiträge: 698 Registriert: 08.09.2003
|
erstellt am: 29. Dez. 2004 11:12 <-- editieren / zitieren --> Unities abgeben:          Nur für flaschenpost
ok Leute, ich habe folgendes auf mapcars tutorial seiten gefunden: (rem 50 7) => 1 ; gibt nur den Rest wieder, der bei ; einer Ganzzahldivision übrigbleibt. Er schreibt aber im ganzen tutorial nichts von reals in Verbindung mit rem. In so einem Fall vertraue ich eher mapcar als der online hilfe von autocad (Erfahrung!). Also nehmen ich einmal an, dass rem mit reals einfach nicht richtig funktioniert (nicht verwendet werden soll), und dass die autocad hilfe in diesem fall einfach falsch ist. Grüße, Stephan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dabrunz Mitglied
 
 Beiträge: 127 Registriert: 28.05.2003
|
erstellt am: 29. Dez. 2004 12:03 <-- editieren / zitieren --> Unities abgeben:          Nur für flaschenpost
Guten Tag zusammen. Das mit den REAL-Zahlen scheint ja eine "Never-Ending-Story" zu sein. Um ein wenig Licht ins Floting-Point-Dunkel zu bringen, 2 Bemerkungen und ein Verweis auf einen früheren (detailierteren) Beitrag: - die Rundungs-Fehler sind weder AutoCAD noch dem LISP-Interpreter anzulasten, sie liegen in der Implementierung von REAL-Zahlen in der sog. "Floating-Point-Aritmetik" begründet, wo die Konvertierung von Dezimal- in Binaärzahlen die Rundungsfehler verursacht; - nur ein Wechsel des zu Grunde liegenden Zahlenmodells kann diese Probleme beheben (BigDezimal ist eine denkbare Alternative) - ein ausführliches Beispiel findet sich in diesem Beitrag. Achim Dabrunz ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin

 Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 29. Dez. 2004 13:51 <-- editieren / zitieren --> Unities abgeben:          Nur für flaschenpost
|
flaschenpost Mitglied Architekt
 
 Beiträge: 497 Registriert: 29.09.2004 ADT 2004 / Windows XP
|
erstellt am: 29. Dez. 2004 14:17 <-- editieren / zitieren --> Unities abgeben:         
Nochmal zur Erinnerung : "(rem 2.0 0.2) ergibt .1999999999999999 ... es wird ja immer verrückter " Und jetzt Eingabe: (rtos (/ 2.0 0.2) 2 16) ... ergibt "10" Geschafft !!! Trotz "Floating-Point-Aritmetik" ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |