Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Subtraktion mit DECMath bringt Probleme (https://www.delphipraxis.net/65354-subtraktion-mit-decmath-bringt-probleme.html)

Tortus 15. Mär 2006 15:45


Subtraktion mit DECMath bringt Probleme
 
Hallo,
ich habe folgendes Problem:
Delphi-Quellcode:
t ist ungefähr 0.012
s ist genau 0.5

NSub(s,t);

s ist 5146823... irgendwas, zumindest nichts sinnvolles.
Kann mir einer schnell erklären, wie diese Zahl zustandekommt? Da sollte ja eigentlich irgendwas mit s = 0.48... rauskommen.

Würde mich über schnelle Antworten sehr sehr freuen, da ich das für eine Arbeit brauche, die ich zu Freitag abzuliefern habe, und das eigentlich heute fertigstellen möchte :(


/e:
Hab mich entschlossen, dass etwas mehr Kontext nicht Schaden kann:
Delphi-Quellcode:
var
  i: Integer;
  a,b,s,t,y,l: IRational;
begin
    Listbox1.Items.Add('---------Prolog---------');
  NSet(a, 1);
  NSet(l,NRat(1.411));
  NSqrt(l);
    Listbox1.Items.Add('l = '+NStr(l));
  NDiv(b, NRat(1), l);
  NSet(s, 0.5);
  NSet(t, 0);
    Listbox1.Items.Add('a = '+NStr(a));
    Listbox1.Items.Add('b = '+NStr(b));
    Listbox1.Items.Add('s = '+NStr(s));
    Listbox1.Items.Add('t = '+NStr(t));
    Listbox1.Items.Add('---------Iteration---------');
  for i:= 1 to 3 do
  begin
    NSet(y,a);                             // y = a
    Listbox1.Items.Add('y = '+NStr(y));

    NAdd(a, b);                            // a = a+b
    NDiv(a, 2);                            // a = a/2
    Listbox1.Items.Add('a = '+NStr(a));

    NMul(b,y);                             // b = b*y
    NSqrt(b);                              // b = sqrt(b)
    Listbox1.Items.Add('b = '+NStr(b));

    NSub(l,a,y);                           // l = a - y
    Listbox1.Items.Add('l = '+NStr(l));
    NPow(t, l, 2);                         // t = l^2
    Listbox1.Items.Add('t = '+NStr(t));
    NPow(l, NRat(2), i);
    Listbox1.Items.Add('l = '+NStr(l));
    NMul(t, l);                            // t = t*l
    Listbox1.Items.Add('t = '+NStr(t));

    NSub(s,t);
    Listbox1.Items.Add('s = '+NStr(s));
    Listbox1.Items.Add('--Fertig mit Schritt '+IntToStr(i));
  end;
    Listbox1.Items.Add('---------Epilog---------');
  NAdd(a, b);
    Listbox1.Items.Add('a = '+NStr(a));
  NPow(a, 2);                        
    Listbox1.Items.Add('a = '+NStr(a));
  NMul(s, 2);
    Listbox1.Items.Add('s = '+NStr(s));
  NDiv(a, s);
    Listbox1.Items.Add('a = '+NStr(a));
    Listbox1.Items.Add('Pi = '+NStr(a));
end;
Das Ganze soll der Berechnung von Pi dienen. Die Listbox ist, wie sich unschwer erkennen lässt, nur zur Überprüfung.

Tortus 15. Mär 2006 17:20

Re: Subtraktion mit DECMath bringt Probleme
 
Ok, kann es sein, dass NAdd, NSub und noch nen paar andere Sachen noch nicht implementiert wurden?
Die geben mir immer fehlerhafte Ergebnisse :(

ichbins 15. Mär 2006 17:26

Re: Subtraktion mit DECMath bringt Probleme
 
Probier einfach eine ältere DECMath funktion. Ich denke allerdins das Hagen die DECMath schon vollständig implementiert hat bevor er sie herausgibt ;)

Zitat:

Delphi-Quellcode:
  for i:= 1 to 3 do

besser:
Delphi-Quellcode:
for i:=1 to spinedit1.value
Benutzerfreundlichkeit ist alles ;)


//edit:

kenn mich nicht mit dem DECMath aus aber vllt musst du deine Zahlenvariablen zuerst (für Speicher etc.) initialisieren.

Tortus 15. Mär 2006 18:02

Re: Subtraktion mit DECMath bringt Probleme
 
Zitat:

Zitat von ichbins
Probier einfach eine ältere DECMath funktion. Ich denke allerdins das Hagen die DECMath schon vollständig implementiert hat bevor er sie herausgibt ;)

Naja, er hat selber irgendwo in nem anderen Thread gesagt, dass er die DECMath noch nicht für Fließkommazahlen implementiert hat ;)

negaH 15. Mär 2006 19:26

Re: Subtraktion mit DECMath bringt Probleme
 
Tja, das tut mir wirklich vierfach leid

1.) NSub() in den IRational hat wirklich einen Fehler
2.) NAdd() ist ebenfalls fehlerhaft
3.) ich muß zugeben das ich bei den letzten Umstellungen IRational vernachlässigt habe
4.) ich danke dir das du den Fehler gefunden hast, was ja schon fast sarkastisch klingt

sorry, sorry, sorry, sorry ;)

Gib mir deine EMail und ich sende dir die korregierte Version, sie liegt schon hier.

Gruß Hagen

Luckie 15. Mär 2006 20:04

Re: Subtraktion mit DECMath bringt Probleme
 
Könntst du mir auch ein Päckchen für meine Homepage schnüren? ;)

negaH 15. Mär 2006 20:06

Re: Subtraktion mit DECMath bringt Probleme
 
50% sind schon versendet, dauert halt bei meinem DSL ;)

Gruß Hagen

Sharky 15. Mär 2006 20:06

Re: Subtraktion mit DECMath bringt Probleme
 
Zitat:

Zitat von Luckie
Könntst du mir auch ein Päckchen für meine Homepage schnüren?

Oder, noch besser! Eines für die DP?

negaH 15. Mär 2006 20:10

Re: Subtraktion mit DECMath bringt Probleme
 
Hatte ich schon probiert im ersten Posting anzuhängen. Kannst mir glauben wie frustriert erstaunt ich war als nach 10 Minuten und dem kompletten Upload von 6.4 Mb meinte das mein Attachment ein bischen größer als 3 Mb sei ;)

Gruß Hagen

Tortus 15. Mär 2006 20:15

Re: Subtraktion mit DECMath bringt Probleme
 
Das find ich aber klasse, dass es schon eine korrigierte Version gibt :)
blabla ist meine Adresse, wäre nett wenn du sie schicken könntest, bzw Luckie sie bei sich hochlädt und ich sie mir dort runterladen kann.

Bin schon richtig deprimiert, weil ich hier nichts an laufen bekomme. Hab schon alles ausprobiert, diverse versuche mit deiner Lib, etwa 3000 Sachen in C++, aber nicht wollte wie ich will.
Und Freitag ist schon Abgabetermin /o\

/E: Wenns gleich bei Luckie on ist, nimm ich mal meine Mailaddi raus, muss ja nicht unnötig verbreitet werden :)

/E2: Gnihi, ich kann Luckie beim Upload zugucken :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr.
Seite 1 von 2  1 2      

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