AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

25 ist kleiner als 25?

Ein Thema von FBrust · begonnen am 2. Dez 2003 · letzter Beitrag vom 2. Dez 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#1

25 ist kleiner als 25?

  Alt 2. Dez 2003, 17:54
Hallo,

in meinem Programm steht folgender Code:

Code:
if (dblWeight >= FieldbyName('intFrom5').AsFloat) and
                     (dblWeight < FieldbyName('intFrom6').AsFloat) then begin ...

Die Variablen haben folgende Inhalte:

dblWeight: 25,
intFrom5 : 15,
intFrom6 : 25,

Alle Variablen sind vom Typ float bzw. numeric.

Die erste Bedingung, also 25 >= 15 wird noch korrekt ausgewertet (true), aber die zweite Bedingung, die mit diesen Werten 25 < 25 lautet, wird auch mit true ausgewertet, so dass das Programm in den then-Zweig läuft.

Meine Frage: Müsste da nicht False rauskommen, 25 ist doch nicht kleiner als 25, oder?

Vielleicht habt ihr einen Tip.


Grüße
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#2

Re: 25 ist kleiner als 25?

  Alt 2. Dez 2003, 17:59
Hallo Frank,

wo kommt der Wert für dblWeight her? Falls Du diesen irgendwie berechnest, kann es doch sein, dass er den Wert 24,99999999999999 annimmt. Das ist rund 25 aber eben kleiner 25!
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#3

Re: 25 ist kleiner als 25?

  Alt 2. Dez 2003, 18:01
hallo,
Eventuell liegts an der Genauigkeit der Float-Zahlen. Ein Numeric ist glaub ich kleiner als double, wenn ich mich jetzt nicht irre.
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: 25 ist kleiner als 25?

  Alt 2. Dez 2003, 18:08
Hallo Sanchez,

danke für Deine Antwort.

Könnte tatsächlich sein, da muss ich mal sehen, inwieweit ich die Werte auf einen gemeinsamen Nenner bringen kann (evtl. muss ich Vor- und Nachkommastellen getrennt auswerten...).

Grüße

Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: 25 ist kleiner als 25?

  Alt 2. Dez 2003, 18:12
Hallo r_kerber,

nun ja, wenn in dblWeight 24,99999999 drinsteht, dann wird doch ebendieser Wert zum Vergleich herangezogen und nicht auf 25 aufgerundet, oder?

Anders gesagt, wenn ich mir den Inhalt von dblWeight mit FloatTostr anzeigen lasse und es steht 24,99999 drin, dann werden auch 24,99999 angezeigt. Alles andere würde bedeuten, dass Delphi automatisch aufrundet und das glaube ich nicht.


Grüße

Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: 25 ist kleiner als 25?

  Alt 2. Dez 2003, 18:18
Delphi nicht aber was ist mit der CPU?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: 25 ist kleiner als 25?

  Alt 2. Dez 2003, 18:25
Ähhh..dem kann ich jetzt nicht ganz folgen, bitte um Aufklärung...

Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#8

Re: 25 ist kleiner als 25?

  Alt 2. Dez 2003, 18:54
Die CPU rechnet binär. Und bei der Umwandlung von/in's Dezimalformat gibt es Rundungsfehler. Und natürlich rundet Delphi auch und zwar genau dann, wenn die Zahl formatiert angezeigt werden werden soll (z.B. mit 2 Nachkommastellen).
  Mit Zitat antworten Zitat
Benutzerbild von trifid
trifid

Registriert seit: 12. Sep 2003
297 Beiträge
 
#9

Re: 25 ist kleiner als 25?

  Alt 2. Dez 2003, 19:18
Hallo,

geh einfach davon aus, dass in der Datenbank-Schicht immer was anderes steht
als wie im Register des Prozessors.
Wenn Du nun einen Vergleich abbilden möchtest, dann geht das genauer,
indem Du nach einer Differenz fragst, die einen bestimmten Fehler haben könnte.

Für Dich bedeutet das also, wenn Du einen Fehler von 1/1000 nehmen würdest
Delphi-Quellcode:
   if (Abs (dblWeight - FieldbyName('intFrom5').AsFloat) > 0.001) AND
      (Abs (dblWeight - FieldbyName('intFrom6').AsFloat) > 0.001) then
   begin
      ....
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

Re: 25 ist kleiner als 25?

  Alt 2. Dez 2003, 19:28
Schon mal versuch mit den gerundeten Werten zu arbeiten ?

Delphi-Quellcode:
If (Round(dblWeight) >= Round(FieldbyName('intFrom5').AsFloat)) and
  (Round(dblWeight) < Round(FieldbyName('intFrom6').AsFloat)) Then Begin ...

http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif
$2B or not $2B
  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 23:32 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