AGB  ·  Datenschutz  ·  Impressum  







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

Seltsame Umwandlung Variant -> Single?

Ein Thema von Cliff · begonnen am 20. Sep 2004 · letzter Beitrag vom 20. Sep 2004
Antwort Antwort
Cliff

Registriert seit: 3. Feb 2004
22 Beiträge
 
#1

Seltsame Umwandlung Variant -> Single?

  Alt 20. Sep 2004, 12:42
Hi,
ich sitze hier vor einem merkwürdigem Phänomen:

Ich möchte ein Variant in ein Float umwandeln. Das Variant wird von extern als 'Float' beschrieben (OPC). Wenn ich im Proggi einen Breakpoint setze und mir den Wert des Variants anzeigen lasse (Mauscursor 'drauf), so hat er den korrekten Wert '9.123456' (Dieser wird auch extern zugewiesen).
Wandele ich den Wert jetzt in Real, oder Single um, so nimmt er folgenden Wert an: 9.1234560013.

Innerhalb von Delphi kann ich das Original auch ruhig in ein anderes Variant übertragen. Der Wert entspricht immer dem Soll. Erst nach der Typumwandlung entsteht das falsche Ergebnis (Single:= Variant).

Was könnte da die Ursache sein???

Gruss Cliff
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Seltsame Umwandlung Variant -> Single?

  Alt 20. Sep 2004, 12:58
Eventuell liegt es daran, wie Fließkommawerte im Computer dargestellt werden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Cliff

Registriert seit: 3. Feb 2004
22 Beiträge
 
#3

Re: Seltsame Umwandlung Variant -> Single?

  Alt 20. Sep 2004, 13:17
Hi Luckie,
aber wie stellt er sie dar (Oder wie kann ich die Umwandlung beeinflussen)???
Der Effekt scheint wiederholbar darin zu liegen das in den letzten Nachkommastellen irgendetwas 'hinein interpretiert' wird, was im original nicht vorhanden ist.

Beispiel:
Variant nach Wandlung
8,1 > 8,10000038146973
7,2 > 7,19999980926514
6,3 > 6,30000019073486
5,4 > 5,40000009536743
4,5 > 4,5

Wie man sieht ist das Ergebnis auch leicht schwankend (Allerdings wiederholbar).
Ist es möglich das das 'Variablen watching' des Variants nicht alles anzeigt was anschliessend bei der Wandlung verwendet wird?

Gruss Cliff
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: Seltsame Umwandlung Variant -> Single?

  Alt 20. Sep 2004, 13:33
Bei einer Typumwandlung zwischen Single, Double und Extended gibt es gerne kleine Unterschiede im Wert.
Das ist unvermeidlich, da jeder der Typen einen anderen endlichen Ausschnitt der Realzahlen darstellt.
Vermutlich nimmt Variant gar keinen Single auf und daher kommt es zu einer Umwandlung.
  Mit Zitat antworten Zitat
Cliff

Registriert seit: 3. Feb 2004
22 Beiträge
 
#5

Re: Seltsame Umwandlung Variant -> Single?

  Alt 20. Sep 2004, 13:46
Hi,
die Überprüfung des Variants mit der Funktion 'VarIsFloat' gibt mir ein True zurück.
Witzigerweise zeigt mir die IDE (Watch) immer den richtigen Wert an.
Solange ich nur mit Varianten arbeite (Habe mal testweise von einer Variant zu anderen übertragen) wird auch immer der korrekte Wet angezeigt. Nur bei der Umwandlung geschehen merkwürdige Dinge...

Gruss Cliff
  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 07:39 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