AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein gerundete Zahlen werden nicht weiterverarbeitet
Thema durchsuchen
Ansicht
Themen-Optionen

gerundete Zahlen werden nicht weiterverarbeitet

Ein Thema von vitapower · begonnen am 10. Okt 2012 · letzter Beitrag vom 11. Okt 2012
 
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.111 Beiträge
 
Delphi XE2 Professional
 
#3

AW: gerundete Zahlen werden nicht weiterverarbeitet

  Alt 10. Okt 2012, 23:17
Hallo,

habe folgendes Problem.

es werden zwei Zahlen im Edit eingegeben, die werden halbiert und auf zwei Kommastellen gerundet.
Dann folgt eine IF Anweisung, die nicht so richtig funktioniert.


var x,y:real;
r2:=RoundTo(x / y,-2);
IF R2 =0.49 THEN BEGIN Faktor1:=2.168 END;
IF R2 =0.50 THEN BEGIN Faktor1:=2.1861 END;
IF R2 =0.51 THEN BEGIN Faktor1:=2.2041 END;


Also bei r2=0,5 zeigt mir Label den richtigen Faktor1, bei den anderen nicht.

HAt jemmand eine Idee was falsch sein könnte. Ich vermute, dass abgerundete Zahl im "System" noch komplett besteht und daher erkennt IF die nicht. Aber wie macht man es besser?
Falsch ist deine Vorstellung von der Vergleichbarkeit von Dezimalbrüchen.

Abgesehen von Potenzen von 2 können Dezimalbrüche bei Realzahlen nicht exakt dargestellt werden.

Sei x=49 und y=100 dann wird nach r2:=RoundTo(x / y,-2) r2 zwar einen Wert haben, der nahe bei 0.49 liegt, aber eben nicht exakt.

Der Vergleich wird über die FPU durchgeführt und in der sehen die Zahlen so aus
r2 = 3FFD FAE1 47AE 147A E147
0.49 = 3FFD FAE1 47AE 147A E148
Beachte die letzte Ziffer in beiden Werten.
Abhilfe:
Entweder
if SameValue(0.49,r2) then …

oder
du definierst r2 als integer, rechnest r2:=Round(x*100/y) und testest mit
if r2=49 then …
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
 


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 16:14 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-2025 by Thomas Breitkreuz