Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zahlen mit Nachkommastellen erweitern... (https://www.delphipraxis.net/141552-zahlen-mit-nachkommastellen-erweitern.html)

Kanikkl 11. Okt 2009 04:23


Zahlen mit Nachkommastellen erweitern...
 
Ich habe eine Frage bezüglich von Nachkommastellen und deren Erweiterungen. Bei der simplen Aufgabe einen Taschenrechner zu gestalten, nur mit Hilfe von Addition und Subtraktion. Und zwar bin ich mittlerweile bei der Division angelangt, die ziemlich viel Zeit in Anspruch genommen hat. Mein Divisionscode sieht folgendermaßen aus:

Delphi-Quellcode:
function krechnungen.dividieren(x,y: extended): extended;
var
temp,ergebnis :extended;
i: integer;
begin
  temp:=x;
  ergebnis:=0;
  repeat
    temp:=self.subtrahieren(temp,y);
    ergebnis:=ergebnis+1;
  until (temp=0) or (temp<0) or (temp<y);
for i:=1 to 10 do
begin
  if temp>0 then
  begin
  temp:=self.multiplizieren(temp,10);
  repeat
    temp:=self.subtrahieren(temp,y);
    ergebnis:=ergebnis+0.1;
  until (temp=0) or (temp<0) or (temp<y);
  end;
end;
result:=ergebnis;
end;
Und jetzt will ich mit Hilfe der Schleife for i:=1 to 10 do... die Kommazahl in Zeile "ergebnis:=ergebnis+0.1;..." mit jedem Durchgang um eine Stelle verringern. Und zwar würde i dann für die Kommastelle stehen. Z.b. bei i=1 0.1, i=2 0.01, i=3 0.001 usw.

Bitte flamed mich nicht zu, wenn das die kompliziertere Variante ist, aber es ist 5 Uhr morgens und da denkt man nicht so simpel xD

Ich will einfach nur noch schlafen und mich morgen um die Quadrate und Wurzeln kümmern xDDD Und weiß einer, wie ich hinkriege, dass möglichst gering gerundet wird? DANKE :D:D!!!

Medium 11. Okt 2009 04:37

Re: Zahlen mit Nachkommastellen erweitern...
 
Extended hat die Genauigkeit die es hat, und es ist der genauste native Typ den aktuelle PCs zu bieten haben. Wenn du es genauer brauchst, kommst du um eine BigInt-Implementierung plus Festkommaarithmetik nicht herum.


Edit: Herzlich willkommen in der DP übrigens :dp:

Kanikkl 11. Okt 2009 10:03

Re: Zahlen mit Nachkommastellen erweitern...
 
Tut mir leid dass ich so blöd frage, aber wie komme ich jetzt vorran? Meine Frage bezog sich auch auf die Erweiterung der Kommastellen von 0.1 - 0.00000001.

Klaus01 11. Okt 2009 10:14

Re: Zahlen mit Nachkommastellen erweitern...
 
Mahlzeit,

kommt es Dir auf die Ausgabe an?
Wenn ja, dann schaut dir mal Delphi-Referenz durchsuchensysUtils.format an.

Denn was Du machst ist ja, das Ergbnis zu verfälschen.
Ein Taschenrechner sollte nach Möglichkeit ein korrektes Ergebnis liefern.

Grüße
Klaus

Kanikkl 11. Okt 2009 10:22

Re: Zahlen mit Nachkommastellen erweitern...
 
nene ^^ ich glaub iwie versteht mich keiner, ich versuchs nochmal:


Also wie gesagt will ich mit dieser "for i:1...." schleife die Gleitkommastellen um 1^-1 erweitern, bzw 0.1 durch 10 teilen damit 0.01 heraus kommt. Und bei jeder Erhöhung soll zu der Gleitkommazahl eine Stelle (zb. bei i=1|0.1;i=2|0.01;i=3|0.001.... usw) hinzugefügt werden.

Da dieser Taschenrechner aber auf sich aufbauen soll, will ich keine Teilung benutzen, weil somit der ganze Sinn verfälscht würde. Ich hätte mit meiner Methode zwar ein ungenaues Ergebnis. Aber ich will lernen, wie genau man das machen kann und dazu ist jetzt die eben erwähnte Methodik nötig.

Kanikkl 11. Okt 2009 10:46

Re: Zahlen mit Nachkommastellen erweitern...
 
Okay ich habs jetzt selber raus bekommen. Zuerst einmal benötige ich eine Methode für Quadrate von Zahlen. Mit dieser kann ich dann die Nachkommastellen mit Hilfe der schleife verkleinern.

Denn 0.1x0.1 = 0.01, somit kann ich bei einem Quadrat von 0.1^2=0.01, von 0.1^3=0.001 erhalten. Somit ist die Frage für mich erledigt!


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 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