AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Wurzel ziehen und anschließend quadrieren Problem
Thema durchsuchen
Ansicht
Themen-Optionen

Wurzel ziehen und anschließend quadrieren Problem

Ein Thema von Azaldur · begonnen am 16. Okt 2010 · letzter Beitrag vom 16. Okt 2010
Antwort Antwort
Seite 1 von 2  1 2      
Azaldur

Registriert seit: 11. Okt 2010
8 Beiträge
 
#1

Wurzel ziehen und anschließend quadrieren Problem

  Alt 16. Okt 2010, 12:25
Delphi-Version: 2009
Hallo,
Ich hab einen kleinen Taschenrechner programmiert, der u.a. die Wurzel ziehen und quadrieren kann. Wenn ich nun die Wurzel ziehe, z.b. von 89, und das ergebnis danach wieder quadriere, kommt jedoch 88,999999 raus und nicht 89. Jemand ne idee was man da machen kann? Die variablen sind jeweils real, mit extended kommt aber das gleiche bei raus.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Wurzel ziehen und anschließend quadrieren Problem

  Alt 16. Okt 2010, 13:36
Also es gibt nichts was man dagegen tun kann;
es liegt in der Natur der binären Fließkommazahlen, das es zu Rundungsfehlern kommt.
Ausserdem entstehen beim Wurzelziehen irrationale Zahlen mit unendlich vielen Nachkommastellen.
Es können aber nur eine best. Anzahl von Stellen gespeichert werden.
Zwangläufig muss hier ein Verlust an Genauigkeit auftreten.

Du solltest aber alle "real" in "extended" ändern.
Ein Taschenrechnerprogramm sollte immer in der höchstmöglichen Genauigkeit arbeiten.
  Mit Zitat antworten Zitat
Azaldur

Registriert seit: 11. Okt 2010
8 Beiträge
 
#3

AW: Wurzel ziehen und anschließend quadrieren Problem

  Alt 16. Okt 2010, 13:40
Alles klar, danke dir .
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#4

AW: Wurzel ziehen und anschließend quadrieren Problem

  Alt 16. Okt 2010, 14:15
Irgendwie ist es schon möglich... Gibt ja schließlich Taschenrechner, die das beherschen...
  Mit Zitat antworten Zitat
Benutzerbild von Kalakmul
Kalakmul

Registriert seit: 11. Apr 2008
27 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Wurzel ziehen und anschließend quadrieren Problem

  Alt 16. Okt 2010, 14:25
Wahrscheinlich "tricksen" hier die Taschenrechner ein wenig. Z. B. könnten sie intern mit einer etwas größeren Genauigkeit rechnen als sie anzeigen. Wenn dann eine Zahl größer als 5 hinter der kleinsten dargestellten Zahl (im Beispiel eine 9, bzw. eine Folge von 9ern) herauskommt, runden sie von hinten sukzessive auf und im genannten Beispiel kommt letztlich eine 89 dabei heraus.

Programmiertechnisch müsste sich da also mit einem geschickten Rundungsbefehl etwas machen lassen.
Wer fragt, ist ein Narr für 5 Minuten, wer nicht fragt, ist ein Narr ein Leben lang.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Wurzel ziehen und anschließend quadrieren Problem

  Alt 16. Okt 2010, 14:32
Schau mal hier
Vielleicht hilft dir das
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Azaldur

Registriert seit: 11. Okt 2010
8 Beiträge
 
#7

AW: Wurzel ziehen und anschließend quadrieren Problem

  Alt 16. Okt 2010, 15:02
Danke, denke damit komm ich weiter . Hab noch ne frage die zwar nicht ganz zum thema passt, aber immerhin so halb . In meinem programm müssen verschiedene werte mit 0 verglichen werden, also auf gleichheit, bzw. ungleichheit. Die werte können auch mal relativ klein sein. Sollte man generell beim vergleichen von werten mit epsilon(nen sehr kleines) arbeiten, also auch beim vergleich mit 0? hab das bisher nur beim vergleich 2er werte <> 0 so gemacht, also 2 Werten die nach einer Rechnung rauskamen. Aber nicht wenn ich ausschließen wollte das z.b. ein Zwischenergebnis=0 ist.

Geändert von Azaldur (16. Okt 2010 um 15:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#8

AW: Wurzel ziehen und anschließend quadrieren Problem

  Alt 16. Okt 2010, 17:15
Mit Null vergleichen klappt fast nie. Versuche es einmal mit IsMathZero aus der Unit Math.
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Azaldur

Registriert seit: 11. Okt 2010
8 Beiträge
 
#9

AW: Wurzel ziehen und anschließend quadrieren Problem

  Alt 16. Okt 2010, 17:23
Hm was ist denn der Grund das mit 0 vergleichen schwierig ist? Also z.b. ob Zahl<>0 oder Zahl=0 ist. Bisher hatte ich eigentlich keine Probleme damit. Was macht isMathZero genau bzw. wo liegt der unterschied zu der epsilon Veriante?

Geändert von Azaldur (16. Okt 2010 um 17:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#10

AW: Wurzel ziehen und anschließend quadrieren Problem

  Alt 16. Okt 2010, 17:32
Dieser Thread könnte dich interessieren:

http://www.delphipraxis.net/137624-%...ig-loesen.html
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz