Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi if-Abfrage mit Extended - Trotz gleichheit False (https://www.delphipraxis.net/171459-if-abfrage-mit-extended-trotz-gleichheit-false.html)

Sir Rufo 8. Nov 2012 11:00

AW: if-Abfrage mit Extended - Trotz gleichheit False
 
Zitat:

Zitat von Captnemo (Beitrag 1190297)
Zitat:

Zitat von Sir Rufo (Beitrag 1190233)
Entschuldige, aber diese Fragestellung ist doch wohl Unfug.

Warum so unfreundlich? Was ist Unfug daran, einen Frage zu etwas zu stellen um sich eine Problematik zu verdeutlichen?

Zitat:

Zitat von Sir Rufo (Beitrag 1190233)
Um dieses Phänomen wirklich zu untersuchen, solltest du Die Zahl von String in ein Extended und dann in die Datenbank schreiben. Dann aus der Datenbank wieder auslesen und mit dem Wert wieder vergleichen.

Genauso mache ich es ja, dadurch bin ich ja überhaupt auf die Frage gestoßen.

Also deine Frage war:
Zitat:

Zitat von Captnemo (Beitrag 1190227)
Also stellt sich mir die Frage, ob eine Zuweisung ala

Delphi-Quellcode:
var
  wert: Extended;
  s: String;
begin
  s:='-29.90';
  wert:=StrToFloat(s)
auch evtl. abweichende Nachkommastellen hinterläßt.

Und genau das meinte ich mit Unfug, denn das gleiche System wird bei dieser Anweisung auch immer das gleiche Ergebnis liefern. Du hast aber 2 Systeme im Spiel und darum kannst du mit diesem Ansatz das nicht ergründen.

p80286 8. Nov 2012 11:41

AW: if-Abfrage mit Extended - Trotz gleichheit False
 
Zitat:

Zitat von Medium (Beitrag 1190277)
Am Rande: Ich empfinde BCD irgendwie als "unnatürlich" und "bloaty", weil eben Dezimalziffern in 4 Bit dargestellt werden. Da bleiben Kapazitäten ungenutzt, und Binärrechner zu zwingen in Hardware dezimal zu rechnen... würg :) Und letztlich ist der Genauigkeitsgewinn nur dort vorhanden, wo vornehmlich von Menschen eingegebene Zahlen eine Rolle spielen. Und schlussendlich ist es auch nur ein seltsam kodiertes Festkommaformat; da doch lieber gleich Currency.

BCD ist kein Festkommaformat, sondern eine nicht binäre Kodierung. Mann kann natürlich eine entsprechende Vereinbarung treffen ist aber wesentlich flexibler als Currency.

Und was die Menschen angeht, versuch einmal einem Mitarbeiter zu erklären warum auf seiner Gehaltsabrechnung immer wieder Rundungsfehler auftauchen, bei Werten, die jeder mäßig begabte Grundschüler addieren kann. Nichts gegen Floatingpoints, aber sie sind nun mal nicht für alles die richtige Lösung.

Gruß
K-H

Medium 8. Nov 2012 14:01

AW: if-Abfrage mit Extended - Trotz gleichheit False
 
Deswegen ja Currency (oder ein anderes Fixed-Format mit der gewünschten Nachkommaanzahl, da ist man ja genau so frei wie mit BCD). Und naja, BCD ist an sich ein Integerformat, daher meinte ich Festkomma - man kann es nur als Fixed für Zahlen mit Nachkommaanteil benutzen. Wo genau da jetzt der Vorteil gegenüber der binären Integerdarstellung sein soll erschließt sich mir noch immer nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:53 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz