Autor
|
Thema: Warum ergibt 0,52-0,58=-0,0599999999 und nicht -0,06? (199 mal gelesen)
|
fetzerman Ehrenmitglied Tischlermeister / Planer / CAD-Admin
Beiträge: 1920 Registriert: 17.02.2002
|
erstellt am: 17. Jan. 2021 11:18 <-- editieren / zitieren --> Unities abgeben:
Moin zusammen! Vorne weg: Ich bin kein Excel-Profi. Ich erstelle gerade eine Liste, in der Koordinaten für ein Cad-Programm ausgewertet werden sollen. Dabei bin ich darauf gestoßen, dass Excel ein für mich unlogisches Ergebnis auswirft. und zwar z.B. 0,52 minus 0,58 ergibt wenn die Ergebniszelle als Zahl mit 16 Nachkommastellen formatiert ist -0,05999999999999 und nicht -0,06 oder 2,52 minus 2,58 ergibt -0,0600000000000001 Oder ist das logisch und ich verstehe das nur nicht ? Hintergrund warum das überhaupt interessiert: Da Autocad als Dezimaltrennung einen Punkt und kein Komma erwartet werden in Excel einige Zellen als Text formatiert und dann das Komma (per Macro) durch einen Punkt ersetzt. In einer weiteren Zelle werden mehrere "Textzellen" per "Verketten-Funktion" aneinander gereit und per Komma getrennt. Das sieht dann so aus: 0.52,0.66,-0.56 Das währen dann xyz-Koordinaten für Autocad. Momentan sieht das aber eher so aus: 0.52,0.66,-0.0600000000000023 Danke für die Hilfe, Gruß, Bernhard
------------------
MÜSSTE SOLLTE KÖNNTE WÜRDE HÄTTE MACHEN ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 17. Jan. 2021 13:05 <-- editieren / zitieren --> Unities abgeben: Nur für fetzerman
Hallo Bernhard, Das Problem ist bekannt und im Internet schon oft diskutiert worden. Es hängt mit der Programmierung und der Speicherung im Binärsystem zusammen, dabei wird nur eine 15stellige Wertangabe verwendet. Programmtechnisch könnte man es auf 29 Stellen erweitern aber ehrlich, das ist nur für Spezialanwendungen nötig. Wem dieses Problem bekannt ist verwendet bei der Wenn - Funktion auch nicht A=B sondern z.B. wenn(abs(A-B)<0,0001;..;..). Und mal ehrlich, wann benötigt man denn tatsächlich 16 Nachkommastellen im CAD? Klar, wenn ich im Straßenbau z.B. eine absolute Genauigkeit bei einer Trassenführung haben möchte (Stichwort tangentialer Anschluß) kann eine höher Genauigkeit der Punkte schon hilfreich sein, aber nur in der Theorie. Denn wenn die Werte in der Natur abgesteckt werden kannst schon froh sein wenn der cm erreicht wird, bei Euch im Modellbau vielleicht der Zehntelmillimeter. Ach ja und zum Verketten: Ich verwende da wenn der Wert in D4 und auf 5 Nachkommastellen gerundet werden soll z.B. WECHSELN(RUNDEN(D4;5);",";".") mit Angabe der gewünschten Rundungsgenauigkeit Grüße Klaus [Diese Nachricht wurde von KlaK am 17. Jan. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fetzerman Ehrenmitglied Tischlermeister / Planer / CAD-Admin
Beiträge: 1920 Registriert: 17.02.2002
|
erstellt am: 17. Jan. 2021 13:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus, Danke für die Erklärung. Und nein, ich benötige nicht 16 Nachkommastellen. Nur zwei. Aber wenn ich den oben beschriebenen Weg gehe, tauchen durch die Formatierung der Zellen und der Funktion Verketten eben diese ungewünschten Nachkommastellen auf Gruß, Bernhard ------------------
MÜSSTE SOLLTE KÖNNTE WÜRDE HÄTTE MACHEN ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fetzerman Ehrenmitglied Tischlermeister / Planer / CAD-Admin
Beiträge: 1920 Registriert: 17.02.2002 Office PC:i7 @2,8; 16GB RAM; Win10 64Bit; GTX 1060 M Office 2016; SketchUp2020Pro; V-Ray for Sketchup IV2022(PDSU); Revit 2021+2022, Enscape . SCHENKER COMPACT 15: Intel Core i7-7700HQ; 16GB RAM; WIN10 64-Bit; Office 2016; GF GTX 1070 8GB 2x 500GB SSD SketchUp2020Pro; V-Ray for Sketchup IV2021(PDSU);Acrobat 9 Pro; Revit 2021 (+2022), Enscape
|
erstellt am: 17. Jan. 2021 13:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus, Dein Edit war der richtige Wink. Damit kann ich mir das Formatieren sparen und erhalte die richtigen Werte.
Zitat: Ach ja und zum Verketten: Ich verwende da wenn der Wert in D4 und auf 5 Nachkommastellen gerundet werden soll z.B. WECHSELN(RUNDEN(D4;5);",";".") mit Angabe der gewünschten Rundungsgenauigkeit
Vielen Dank und ein schönes Restwochenende! BTW: Hat nichts mit Modellbau zu tun sondern mit Ausgrabungen ------------------
MÜSSTE SOLLTE KÖNNTE WÜRDE HÄTTE MACHEN ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|