Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Warum ergibt 0,52-0,58=-0,0599999999 und nicht -0,06?

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
Autor Thema:  Warum ergibt 0,52-0,58=-0,0599999999 und nicht -0,06? (194 mal gelesen)
fetzerman
Ehrenmitglied
Tischlermeister / Planer / CAD-Admin


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

Beiträge: 1920
Registriert: 17.02.2002

erstellt am: 17. Jan. 2021 11:18    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

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



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

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 17. Jan. 2021 13:05    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 fetzerman 10 Unities + Antwort hilfreich

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


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

Beiträge: 1920
Registriert: 17.02.2002

erstellt am: 17. Jan. 2021 13:30    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 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


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

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 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 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 >>)

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