![]() |
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:
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.
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; 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!!! |
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: |
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.
|
Re: Zahlen mit Nachkommastellen erweitern...
Mahlzeit,
kommt es Dir auf die Ausgabe an? Wenn ja, dann schaut dir mal ![]() Denn was Du machst ist ja, das Ergbnis zu verfälschen. Ein Taschenrechner sollte nach Möglichkeit ein korrektes Ergebnis liefern. Grüße Klaus |
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. |
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 17:42 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