AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Konvertierungsfehler bei Funktion
Thema durchsuchen
Ansicht
Themen-Optionen

Konvertierungsfehler bei Funktion

Ein Thema von khh · begonnen am 8. Jun 2015 · letzter Beitrag vom 9. Jun 2015
Antwort Antwort
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.867 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Konvertierungsfehler bei Funktion

  Alt 8. Jun 2015, 18:43
Müsste bei
Zitat:
sum (feld1 - feld1)
nicht sowieso immer 0 herauskommen?
Ich gehe mal davon aus, dass dies ein Tippfehler war.
Markus Kinzler
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Konvertierungsfehler bei Funktion

  Alt 8. Jun 2015, 18:57
ja, war ein Tippfehler,

das mit der Zeitspanne leuchtet mir ein.
Wenn ich die Abfrage direkt in der Datenbank absetzte bekomme ich einen Dezimalwert.

Heißt das ich muss als Datentyp einen Gleitkommatypen nehmen ?
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.867 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Konvertierungsfehler bei Funktion

  Alt 8. Jun 2015, 19:03
Ein TDateTime ist ja ein Double vor dem Komma steht das Datum, dahinter der Zeitanteil.
Das Problem dütfte die Interptretation des Wertes sein. Zeitspannen würde ich in einem Integer speichern ( Zeit in Millisekunden)
Markus Kinzler
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Konvertierungsfehler bei Funktion

  Alt 9. Jun 2015, 08:01
Ein TDateTime ist ja ein Double vor dem Komma steht das Datum, dahinter der Zeitanteil.
Vor dem Komma steht nicht das Datum, sondern die Anzahl der Tage seid dem 30.12.1899. Und nach dem Komma steht keine Uhrzeit, sondern die seit Mitternacht vergangene Zeit als Bruchteil eines Tages.

Ich würde den Wert in Delphi zunächst an einen Double zuweisen und den dann so formatieren, das man etwas damit anfangen kann. Die Einheit des Dezimalwertes wäre demnach 'Tage'. So würde der Wert '1.25' der Zeitspanne 'Ein Tag und 6 Stunden entsprechen'.
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Konvertierungsfehler bei Funktion

  Alt 9. Jun 2015, 08:44
ich danke euch recht herzlich
Karl-Heinz
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Konvertierungsfehler bei Funktion

  Alt 9. Jun 2015, 09:23
alsoooo,
ich hab jetzt ein numerisches Ergebnis mit

0,083333333 was 2 Stunden entspricht

14:00 - 12:00

wie rechne ich jetzt am besten mit dem Tagesbruchteil weiter?
Einfach in Sekunden, Minuten, Stunden umrechnen ?

Da bekomme ich mit meinen 9 Nachkommastellen wohl Rundungsfehler rein
Karl-Heinz

Geändert von khh ( 9. Jun 2015 um 09:37 Uhr)
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#7

AW: Konvertierungsfehler bei Funktion

  Alt 9. Jun 2015, 09:45
Da bekomme ich mit meinen 9 Nachkommastellen wohl Rundungsfehler rein
Ein Punkt der 9. Stelle nach dem Komma entspricht 86 Nanosekunden. Wenn Du größere Genauigkeit brauchst...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Konvertierungsfehler bei Funktion

  Alt 9. Jun 2015, 09:46
siehe Delphi-Referenz durchsuchenDateUtils (Delphi) und SysUtils ... Lazarus k.A. wo.

Mit HoursPerDay oder MinsPerDay multiplizieren und Letzeres kann man auch als Integer rounden.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Konvertierungsfehler bei Funktion

  Alt 9. Jun 2015, 12:10
wie rechne ich jetzt am besten mit dem Tagesbruchteil weiter?
Einfach in Sekunden, Minuten, Stunden umrechnen ?
wofür brauchst Du es denn? Wenn Du mit den Trainingszeiten eines Ferrari auf dem Hockenheimring umgehen mußt, dann ist die Millisekunde wohl durchaus relevant, geht es um die Bewegung Deiner Schildkröte im Salatbeet sollte die Sekunde durchaus reichen.
Nicht umsonst rechnen z.B. Autowerkstätten auch nicht minutengenau ab.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:11 Uhr.
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 by Thomas Breitkreuz