Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Realzahl runden

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Realzahl runden (3786 mal gelesen)
Bernd10
Mitglied



Sehen Sie sich das Profil von Bernd10 an!   Senden Sie eine Private Message an Bernd10  Schreiben Sie einen Gästebucheintrag für Bernd10

Beiträge: 763
Registriert: 20.11.2003

Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz
16 GB RAM
Windows 10 Pro 64-bit
AutoCAD Mechnical 2020 Deu

erstellt am: 12. Okt. 2011 13:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Ueberwachung.JPG


runden.lsp.txt

 
Hallo,

ich habe ein Problem beim Runden zweier Realzahlen, das ich mir nicht erklären kann. Dabei runde ich die zwei Realzahlen rxausdeed und rxausdkoor mit meiner Funktion, die für mich gleich sind (siehe Datei Ueberwachung.jpg). Die Lisp-Funktion, die ich dafür verwende, ist ebenfalls in der Anlage enthalten.

Warum sind die beiden Realzahlen rxausdeed und rxausdkoor nach dem Runden nicht gleich?

Danke im Voraus und viele Grüße
Bernd

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 12. Okt. 2011 13:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bernd10 10 Unities + Antwort hilfreich

Wenn die beiden Zahlen nicht gleich sind, können auch beim Runden unterschiedliche Ausgaben entstehen:

142.4449999999999999
Angezeigt als
142.44500000
gerundet auf 2 Stellen
142.44
und
142.4450000000000001
Angezeigt als
142.44500000
gerundet auf 2 Stellen
142.45


------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

[Diese Nachricht wurde von CAD-Huebner am 12. Okt. 2011 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bernd10
Mitglied



Sehen Sie sich das Profil von Bernd10 an!   Senden Sie eine Private Message an Bernd10  Schreiben Sie einen Gästebucheintrag für Bernd10

Beiträge: 763
Registriert: 20.11.2003

Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz
16 GB RAM
Windows 10 Pro 64-bit
AutoCAD Mechnical 2020 Deu

erstellt am: 12. Okt. 2011 13:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Udo,

danke für Deine Antwort.

Diese Problematik ist mir bekannt. Deshalb habe ich beide Realwerte mit der Funktion rtos und der Genauigkeit von 10 Kommastellen gewandelt (siehe Anlage Ueberweachung.jpg). Von den gewandelten Werten stimmen die 10 Kommastellen überein. Es muss also einen anderen Grund geben.

Viele Grüße
Bernd

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 12. Okt. 2011 14:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bernd10 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Bernd10:
...Diese Problematik ist mir bekannt. Deshalb habe ich beide Realwerte mit der Funktion rtos und der Genauigkeit von 10 Kommastellen gewandelt (siehe Anlage Ueberweachung.jpg). ...

Ich kann nur erkennen, dass du die die Werte mit RTOS hast anzeigen lassen. Eine Zuweisung dieses gerundeten Stings kann ich in dem Programm nicht entdecken. Dort wird der Originalwert auf 2 Stellen gerundet - mit dem bekannten - erklärbaren - Ergebnis.

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bernd10
Mitglied



Sehen Sie sich das Profil von Bernd10 an!   Senden Sie eine Private Message an Bernd10  Schreiben Sie einen Gästebucheintrag für Bernd10

Beiträge: 763
Registriert: 20.11.2003

Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz
16 GB RAM
Windows 10 Pro 64-bit
AutoCAD Mechnical 2020 Deu

erstellt am: 12. Okt. 2011 14:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


runden.lsp.txt

 
Hallo Udo,

Zitat:
Original erstellt von CAD-Huebner:

Ich kann nur erkennen, dass du die die Werte mit RTOS hast anzeigen lassen. Eine Zuweisung dieses gerundeten Stings kann ich in dem Programm nicht entdecken. Dort wird der Originalwert auf 2 Stellen gerundet - mit dem bekannten - erklärbaren - Ergebnis.

ich habe meine Funktion geändert (siehe Anlage). Mit dieser Version sind die gerundeten Werte so, wie ich es erwartet habe.

Danke und viele Grüße
Bernd

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 12. Okt. 2011 20:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bernd10 10 Unities + Antwort hilfreich

Hallo Bernd,

könnte es auch so sein?

;;; ROUND (gile)
;; Round a number according to specified precision
;;
;; Arguments
;; num : the number to be rounded
;; prec : precision
;;
;; Examples
;;; (round-prec pi 0.01) -> 3.14
;;; (round-prec pi 1e-5) -> 3.14159
;;; (round-prec 5456.50 1.0) -> 5457.0
;;; (round-prec 5456.50 100) -> 5500

(defun round (num prec)
  (if (zerop prec)
    num
    (* prec
      (fix (if (minusp num)
      (- (/ num prec) 0.5)
      (+ (/ num prec) 0.5)
    )
      )
    )
  )
)

(defun RoundP(lstPoint intRound)
(mapcar '(lambda (X)(/ (fix (* X (expt 10 intRound)))(expt 10.0 intRound))) lstPoint)
)

;;---------------------------------------
Der Autor ist mir nicht bekannt.

Gruß
Theodor

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 12. Okt. 2011 20:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bernd10 10 Unities + Antwort hilfreich

ein paar Beiträge vorher im Text ...

(defun DT:ROUND (ZAHL BASIS / TEMP )
    (if (and(numberp ZAHL) (=(numberp BASIS))(> BASIS 0))
      (progn   
        (setq TEMP (/ (abs ZAHL)  BASIS))
        (cond
          ( (> (- TEMP (fix TEMP)) 0.5) (setq TEMP (+ (fix TEMP) 1)))
          ( (< (- TEMP (fix TEMP)) 0.5) (setq TEMP    (fix TEMP)  ))
          ( (= (- TEMP (fix TEMP)) 0.5)       
            (if (equal (/ (fix TEMP) 2.0) (fix(/ (fix TEMP) 2.0)) 0.001)
              (setq TEMP    (fix TEMP)  )
              (setq TEMP (+ (fix TEMP) 1))
            )
          )
        )   
        (setq TEMP (* BASIS TEMP (if (< Zahl 0 ) -1.0 1.0)))
      )
    )
    (if (=(type BASIS)'INT) (fix TEMP) TEMP) 
  )


Rundet auf vielfaches von Basis ... also bei 5 ... nächstes Vielfaches von 5 .. bei 0.001 auf die dritte Kommastelle usw

------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bernd10
Mitglied



Sehen Sie sich das Profil von Bernd10 an!   Senden Sie eine Private Message an Bernd10  Schreiben Sie einen Gästebucheintrag für Bernd10

Beiträge: 763
Registriert: 20.11.2003

Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz
16 GB RAM
Windows 10 Pro 64-bit
AutoCAD Mechnical 2020 Deu

erstellt am: 13. Okt. 2011 07:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Theodor, hallo Thomas,

danke für die Vorschläge. Ich werde sie im Einzelnen in meiner Programmumgebung testen.

Viele Grüße
Bernd

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz