AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Zahlen mit Nachkommastellen erweitern...

Ein Thema von Kanikkl · begonnen am 11. Okt 2009 · letzter Beitrag vom 11. Okt 2009
Antwort Antwort
Kanikkl

Registriert seit: 11. Okt 2009
Ort: Soest
10 Beiträge
 
#1

Zahlen mit Nachkommastellen erweitern...

  Alt 11. Okt 2009, 05:23
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 !!!
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Zahlen mit Nachkommastellen erweitern...

  Alt 11. Okt 2009, 05:37
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
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Kanikkl

Registriert seit: 11. Okt 2009
Ort: Soest
10 Beiträge
 
#3

Re: Zahlen mit Nachkommastellen erweitern...

  Alt 11. Okt 2009, 11:03
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.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.752 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Zahlen mit Nachkommastellen erweitern...

  Alt 11. Okt 2009, 11:14
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
Klaus
  Mit Zitat antworten Zitat
Kanikkl

Registriert seit: 11. Okt 2009
Ort: Soest
10 Beiträge
 
#5

Re: Zahlen mit Nachkommastellen erweitern...

  Alt 11. Okt 2009, 11:22
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.
  Mit Zitat antworten Zitat
Kanikkl

Registriert seit: 11. Okt 2009
Ort: Soest
10 Beiträge
 
#6

Re: Zahlen mit Nachkommastellen erweitern...

  Alt 11. Okt 2009, 11:46
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!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:45 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