Autor Beitrag
DeadlyAppearance
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 113

Win 7
Delphi 2010 Arch., C# VS 2008
BeitragVerfasst: Fr 25.07.08 20:44 
Abend zusammen.

Und zwar folgendes Problem.
Warum ist in diesem Beispiel die Zahl plötzlich 6,5...?
Gehe ich beim Debuggen mit der Maus über den geteilten Wert, so ist dieser 1,999934...
Wenn ich nun diesen von 2 abziehe erwarte ich 0,0000... und nicht sowas.
Bis jetzt ging das ganze auch Problemlos, bis auf in diesem Beispiel.

Roundto auf 4 Stellen reicht mir nicht, aber 6 Stellen kommt dieses Phänomen.
Wie kann ich dies lösen und warum tritt dies auf?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var
  x3 : Int64;
  vh3 : Real;
begin
  Eisen := 9626283514;
  Titan := 6273796400;

  x3 := max(floor((2*Titan-Eisen)/(2*250000-40000)),0);
  x3 := min(x3,min(floor(Eisen/40000),floor(Titan/250000)));
  vh3 := max(2-((Eisen-x3*40000)/(Titan-x3*250000)),0);
  if(vh3 = 0)then
    vh3 := 2;
end;

_________________
Als du auf die Welt kamst, weintest du, und um dich herum freuten sich alle. Lebe so, daß, wenn du die Welt verläßt, alle weinen und du allein lächelst.
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 25.07.08 21:30 
Die Zahl ist nicht 6,5 sondern 6,59979594973976E-5, das nennt man wissenschaftliche Notation. Die Kann man auch irgendwie abstellen mit irgendeinem Formatierungsbefehl. Ansonsten kann man mit Extended eine höhere Genauigkeit erzeielen, falls du das mal brauchst.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
DeadlyAppearance Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 113

Win 7
Delphi 2010 Arch., C# VS 2008
BeitragVerfasst: Fr 25.07.08 21:54 
Und was ist das dann für eine Zahl?
War das nicht 5 Nuller vorm Komma oder so?

Denn 0,000100... und 0,000355... sind größer wie diese Zahl.

_________________
Als du auf die Welt kamst, weintest du, und um dich herum freuten sich alle. Lebe so, daß, wenn du die Welt verläßt, alle weinen und du allein lächelst.
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Fr 25.07.08 22:02 
user profile iconDeadlyAppearance hat folgendes geschrieben:
Und was ist das dann für eine Zahl?

aEb = a * 10^b ;-)
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Fr 25.07.08 22:02 
user profile iconDeadlyAppearance hat folgendes geschrieben:
Und was ist das dann für eine Zahl?

0.0000659979594973976

user profile iconTilman hat folgendes geschrieben:
Die Kann man auch irgendwie abstellen mit irgendeinem Formatierungsbefehl

:arrow: FloatToStrF :idea: ;)
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 25.07.08 22:04 
@Yogu stimmt, habs auch grad rausgefunden:

ausblenden Delphi-Quelltext
1:
edit2.Text := FloatToStrF(vh3,ffFixed,18,18);					

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Fr 25.07.08 22:40 
user profile iconTilman hat folgendes geschrieben:
@Yogu stimmt

Was dachtest du denn? :mrgreen: