AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Double-Wert in einen Single-Wert umwandeln
Thema durchsuchen
Ansicht
Themen-Optionen

Double-Wert in einen Single-Wert umwandeln

Ein Thema von swbo · begonnen am 20. Dez 2005 · letzter Beitrag vom 20. Dez 2005
Antwort Antwort
swbo

Registriert seit: 19. Dez 2005
Ort: Meerane
8 Beiträge
 
#1

Double-Wert in einen Single-Wert umwandeln

  Alt 20. Dez 2005, 12:46
Hallo,

ich erhalte über eine globale Variable einen Singlewert von 661.299998. Dieser Wert wird auf eine Variable vom Wert double mit trunc(661.299998)/10; Ich erhalte nun 661.200000. Leider muss ich nun diesenf Wert wieder in einen Single-Umwandeln und erhalte dann wieder einne Wert von 661.200003. Wie bekomme ich die 3 bei diesem Singlewert weg? Danke.

Gruss
-Swen
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Double-Wert in einen Single-Wert umwandeln

  Alt 20. Dez 2005, 13:00
Diese Ungenauigkeiten sind bei Floats normal (d.h. nicht zu ändern). Das liegt an der begrenzten Genauigkeit, die man mit (endlich vielen) Bits nur erreichen kann.
Normalerweise macht sich der Fehler allerdings erst etwas weiter hinten hinter dem Komma bemerkbar. Hast du vielleicht ein paar Nullen unterschlagen?
Ansonsten probier mal, 0.000003 abzuziehen. Aber wie gesagt, 100%ige Genauigkeit wirst du im Allgemeinen nicht erreichen können!

//edit:
BTW, herzlich Willkommen in der DP!
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Double-Wert in einen Single-Wert umwandeln

  Alt 20. Dez 2005, 13:23
Beweis für tigerman's Behauptung:
Delphi-Quellcode:
Var
  s : Single;

Begin
  s:=6122/10; // sollte ja 612.2 sein
  showmessage (FloatToStr (s));
End;
Tipp: Kein Single, immer Extended. Oder zumindest Double. Der sollte doch genau sein.

Zitat von swbo:
.. Dieser Wert wird auf eine Variable vom Wert double mit trunc(661.299998)/10; Ich erhalte nun 661.200000....
Nee, da hast Du dich wohl verschrieben: Trunc (661.299998)/10 ist immer 66.1 (ca.)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  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 20:20 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