AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Probleme mit StrToFloatDev + if-Abfrage
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit StrToFloatDev + if-Abfrage

Ein Thema von Kirby886 · begonnen am 27. Feb 2009 · letzter Beitrag vom 27. Feb 2009
Antwort Antwort
Kirby886

Registriert seit: 23. Feb 2009
Ort: Niedersachsen
6 Beiträge
 
Delphi 2007 Professional
 
#1

Probleme mit StrToFloatDev + if-Abfrage

  Alt 27. Feb 2009, 13:07
Moin zusammen!

Erstmal ein dickes Lob an das Forum. Bin noch recht neu in der Delphi-Programmierung und das Forum ist echt eine große Hilfe.

Zu meinem Problem:

Ich hab die folgende Funktion mit zwei Strings als Parameter, die ich jeweils in Double umwandeln möchte. Sollte dies nicht möglich sein, so bekommt die jeweilige Double-Variable eine Gleitkommazahl mit einer Länge zugewiesen, die die maximal mögliche Länge des übergebenen Strings übersteigt.

So weit, so gut. Aber irgendwas stimmt mit meiner if-Abfrage nicht: Denn wenn ich z.B. Buchstaben übergebe erhalten die Double-Variablen zwar korrekt diese 0.00000000000009, aber ich komme trotzdem nicht in den if-Block, sondern in den else-Block. Also wo ist mein Denkfehler?

Delphi-Quellcode:
function TCalcControl.getResult(inSValue1, inSValue2: String): String;
var lDValue1, lDValue2: Double;
begin
  lDValue1 := StrToFloatDef(inSValue1, 0.00000000000009);
  lDValue2 := StrToFloatDef(inSValue2, 0.00000000000009);
  if ((lDValue1 = 0.00000000000009) or (lDValue2 = 0.00000000000009)) then result := 'Bitte nur Zahlen eingeben!'
  else [...]
end;
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.754 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Probleme mit StrToFloatDev + if-Abfrage

  Alt 27. Feb 2009, 13:12
Hallo,

die Zahlen werden intern immer binär darstellt.
Es kann also sein das 0.00000009 nicht so exakt dargestellt werden können.
Was Du machen kannst ist auf value <=0.0000009 zu prüfen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: Probleme mit StrToFloatDev + if-Abfrage

  Alt 27. Feb 2009, 13:20
Benutze Delphi-Referenz durchsuchenTryStrToFloat
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Kirby886

Registriert seit: 23. Feb 2009
Ort: Niedersachsen
6 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Probleme mit StrToFloatDev + if-Abfrage

  Alt 27. Feb 2009, 13:35
Zitat von Klaus01:
die Zahlen werden intern immer binär darstellt.
Es kann also sein das 0.00000009 nicht so exakt dargestellt werden können.
Was Du machen kannst ist auf value <=0.0000009 zu prüfen.
Hab auch schon an eine ungenaue interne Darstellung gedacht, kam mir trotzdem bissl komisch vor.
value <= 0.0000009 wär nicht gegangen, da ich ggf. auch eine 0 eingeben möchte!


Zitat von Sir Rufo:
Damit klappt's super!


Danke euch beiden. Schönes Wochenende!
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#5

Re: Probleme mit StrToFloatDev + if-Abfrage

  Alt 27. Feb 2009, 14:09
Für den Vergleich gebrochener Zahlen oder DateTime
solltest du dir mal folgende Funktionen ansehen:
Delphi-Quellcode:
  
function SameValue()
function IsZero()
function CompareValue()
alex
Alexander
  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 17:04 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