Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Extended erweitern? (https://www.delphipraxis.net/61010-extended-erweitern.html)

cruso 15. Jan 2006 20:00


Extended erweitern?
 
Hi!

Mit dem Typ Extended kann man es schaffen, eine Zahl mit bis zu 19/20 Nachkommastellen anzeigen zu lassen. Wie ist es möglich dies zu erweitern (ins Unendliche)? Ich weis das dies nicht geht da irgendwann jeder Rechner an den Rand seiner Möglichkeiten kommt.
Aber wie kann man es schaffen, dass z.B. 1.000.000 oder 1.000.000.000 Nachkommastellen angezeigt werden können?

MfG
Cruso

idontwantaname 15. Jan 2006 20:04

Re: Extended erweitern?
 
Unbegrenzt viele Nachkommastellen

cruso 16. Jan 2006 15:38

Re: Extended erweitern?
 
Zitat:

Zitat von idontwantaname

Naja an dem Artikel möchte ich nicht weiterschreiben, da er doch schon etwas älter ist; außerdem beantwortet er die Frage nicht wirklich!

Khabarakh 16. Jan 2006 16:07

Re: Extended erweitern?
 
Zitat:

Zitat von cruso
Zitat:

Zitat von idontwantaname

Naja an dem Artikel möchte ich nicht weiterschreiben, da er doch schon etwas älter ist; außerdem beantwortet er die Frage nicht wirklich!

Wenn dir Hagens DEC Math nicht helfen kann, kann dir keiner helfen :gruebel: . Oder geht es dir um das "wie"? Dann hat der Wissende schon die wesentliche Antwort gegeben. Du kannst auch hier im Forum nach Hagens Posts suchen, die sind immer lesenswert. AFAIR hat er irgendwo mal einen längeren Post über die Implementation der Grundrechenarten geschrieben.

cruso 16. Jan 2006 16:16

Re: Extended erweitern?
 
Mir geht es eigentlich eher um das "WIE"! :oops:

Bin mir nicht sicher, deshalb frag ich: Ist es mit C++ möglicherweise einfacher umzusetzen?

alzaimar 16. Jan 2006 16:24

Re: Extended erweitern?
 
Um mit bieliebig grossen Zahlen zu rechnen, benötigt man nur ein bisserl Gehirnschmalz und eine Erinnerung, wie man das selbst 'schriftlich' ausrechnet.

Deine Zahl sei ein Array of Byte. In jedem Array-Element ist eine Dezimalziffer. Addieren geht so (ähnlich):
Delphi-Quellcode:
Function BigAdd (A,B : TByteArray) : TByteArray;
Var
  i : Integer;

Begin
  For i:= 0 to Length (A) - 1 Do Begin
    OverFlow := (A[i] + B[i] + OverFlow);
    Result [i] := OVerFlow mod 10;
    OverFlow := OverFlow Div 10;
  End;
  If OverFlow<>0 Then
    Raise Exception.Create ('Overflow error');
End;
Der o.g. Code geht der Einfachheit halber davon aus, das A und B gleich groß dimensioniert sind.
Differenz bilden geht genauso. Multiplizieren und Dividieren sind auch relativ simpel zu implementieren, eben wie man es schriftlich auch macht.

@cruso: C++ und Delphi sind zu 99% identisch, nur C++ verwendet mehr Sonderzeichen. Ob die Sprachunterschiede nun 1% oder 5% ergeben, ist irrelevant. In dem Fall hier kannst du das auch mit Basic, Fortran, Cobol, PL/1, Algol oder sonst irgendwelchen archaischen Sprachen implementieren. Ich habe so eine Geschichte mal aus Spass auf einem HP-85 programmiert, das ist fast 30 Jahre her.


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