AGB  ·  Datenschutz  ·  Impressum  







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

38109,791667 <> 38109,791667?

Ein Thema von alcaeus · begonnen am 29. Apr 2004 · letzter Beitrag vom 30. Apr 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#1

38109,791667 <> 38109,791667?

  Alt 29. Apr 2004, 18:22
Hi! Ich vergleiche in meiner Routine zwei DateTime-Werte:
Value=38109,791667
BoundaryRight=38109,791667

Wenn ich im Debug-Modus die beiden Werte anschaue, so sind sie exakt gleich, jedoch gibt der Vergleich Value=BoundaryRight immer False. Kennt jemand das Problem und eventuelle Schritte dagegen?
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#2

Re: 38109,791667 <> 38109,791667?

  Alt 29. Apr 2004, 18:38
wie genau gleich sollen sie sein (Tag,Stunde,Minute...)
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#3

Re: 38109,791667 <> 38109,791667?

  Alt 29. Apr 2004, 18:48
Naja, eigentlich dürfte das hier keine Rolle spielen, denn mir liegen die obigen Werte vor, die stehen für den 2. Mai, 19 Uhr. Das heißt, die Bedingung müsste True ergeben, was sie leider nicht tut, und mich bringt das Problem seit 20 Minuten zur Verzweiflung
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#4

Re: 38109,791667 <> 38109,791667?

  Alt 29. Apr 2004, 18:52
Ich fragte nicht so "obenhin", weil Dein Problem tiefer geht - nun gut da Du es nicht sagen möchtest, bleibt Dir nur der lange Weg - selber lernen. Lies Dir in dem untenstehenden Link die Seite 2 und das "Rezept 2.3 Vergleich von Fließkommazahlen" durch - dann siehst Du klar
Gruß
Artikel

PS: TDateTime ist ein Double also eine Fließkommazahl Dieser Artikel stellt das Problem auch gut dar
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: 38109,791667 <> 38109,791667?

  Alt 29. Apr 2004, 19:16
Na gut... nachdem dus unbedingt wissen willst, ich arbeite mit zwei DateTimePickern, einem fürs Datum, einem für die Zeit. Anschließend zähle ich die beiden Werte so zusammen:
GenaueZeit := Trunc(dtp_Datum.Date)+Frac(dtp_Zeit.Time); Das Ergebnis dieser Rechnung ist der obenstehende Wert. Der DateTimePicker für die Zeit muss also auf die Sekunde genau sein. Ich kann aber noch nicht nachvollziehen, wozu diese Information gut ist. Ich probiere jetzt mal den Vergleich als String...
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#6

Re: 38109,791667 <> 38109,791667?

  Alt 29. Apr 2004, 19:18
Die Antwort findest Du in den genannten Artikeln - dort ist beschrieben, warum das, was Du tust schief geht, und wie es besser geht...
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#7

Re: 38109,791667 <> 38109,791667?

  Alt 29. Apr 2004, 19:19
Ja, ich habe das Problem gelöst, mit FloatToStr... Danke vielmals
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: 38109,791667 <> 38109,791667?

  Alt 29. Apr 2004, 19:54
Zitat von alcaeus:
Ja, ich habe das Problem gelöst, mit FloatToStr... Danke vielmals
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: 38109,791667 <> 38109,791667?

  Alt 29. Apr 2004, 19:57
Zitat von Luckie:
Zitat von alcaeus:
Ja, ich habe das Problem gelöst, mit FloatToStr... Danke vielmals
Ja:
Value=38109,791667
BoundaryRight=38109,791667
Delphi-Quellcode:
bRes1 := Value=BorderRight;
bRes2 := FloatToStr(Value)=FloatToStr(BorderRight);
bRes1 ist False, bRes2 hingegen True...ich hab auch gestaunt
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: 38109,791667 <> 38109,791667?

  Alt 29. Apr 2004, 20:35
Probier mal sowas wie

Delphi-Quellcode:
const epsilon = 0.0000000001;


[...]
if (abs(value - BorderRight) < epsilon) then //...
Aufgrund der Natur von Fließkommazahlen ist es recht unwahrscheinlich, dass sie völlig identisch sind. Deshalb gibst du die Genauigkeit an. Je näher dieses epsilon an 0 dran ist, desto genauer wird der Vergleich. Ist er zu nah an 0 dran, kann es halt passieren, dass er nicht mehr korrekt ist.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  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 12:19 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