Autor Beitrag
Hawke
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 03.09.05 14:50 
Moin,
für meine "rechenmaschine" will ich die exponentialschreibweise ausschalten.
es werden als ergebnis große zahlen stets mit zb 2,123456789e161 angegeben.
da mich gerade bei bei großen potenzierungen die exakten letzten ziffern interessieren, soll er möglichst garnicht runden (also riesenzahlenwürste) oder zumindest erst nach der 500sten stellen anfangen zu runden.
wie ist das möglich?

mfg
hawke
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Sa 03.09.05 14:53 
die zahl wird dann nicht genau sein. musst dir nen eigens rechenforam ausdenken um so große zahlen darzustellen

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
LigH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 239

Win98SE, Win2000SP4
D7
BeitragVerfasst: Sa 03.09.05 19:31 
:welcome:

Ich würde dir empfehlen, nach Suche bei Google DELPHI "HUGE INTEGER" zu suchen, es gibt schon einige Huge-Integer-Engines, die riesige Zahlen symbolisch als Array berechnen. Aber auch die haben noch gewissen Grenzen...
Hawke Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 04.09.05 00:18 
Erstmal vielen dank...
Was heißt ein eigenes neues Rechenform schreiben?
es muss doch möglich sein dem rechner zu sagen er soll zb 2 mit 245 potenzieren und das ergebnis in ein fenster schreiben. (und wenn er da 10 stunden rechnet)
oder gibt es limits die speciherplatz/länge einer zahl begrenzen? aber auch die müssten doch ausgeschaltet werden können??

andere frage am rand: wie bringe ich "ihm" bei, dass er falls vorhanden als ersten wert das vorangegane ergebnis nimmt und mit dem zweiten wert regulär addiert/multipliziert...?
? 1. befehl edit1 und edit2 löschen
2. befehl prüfen ob edit3 (ergebnis) gefüllt
3. falls edit3 wert hat als edit1 einsetzen (aber nur wenn man da nichts anderes eingibt)
4. ziel: bsp 5+5=10// 5 addieren (weil edit1(1.wert)nicht belegt wurde rechnet er (edit3 (10) + edit2(5) )
LigH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 239

Win98SE, Win2000SP4
D7
BeitragVerfasst: So 04.09.05 00:26 
Das Problem an so riesigen Zahlen ist doch vor allem der Speicherplatzbedarf, wenn du alle gültigen Stellen behalten willst. Mal ganz abgesehen von der Möglichkeit, die dann auch wieder irgendwo darstellen zu können - eine "Zeile" wird da nicht ausreichen.

Solche Huge-Integer-Routinen werden sicherlich entweder mit BCD-Darstellung (Arrays) oder mit einer Art String-Darstellung intern arbeiten. Besorge dir solche Quelltexte, lies die Dokumentationen - dann wirst du auch herausfinden, was sie können und worauf man achten muss.
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: So 04.09.05 16:49 
@@ Hawke: Die Möglichkeit so viele Zahlen darzustellen ist nur Software gegeben. Das liegt daran, dass es nicht proprietär wäre Millionen von Transistoren auf Silizium zu bannen damit jeder just for Fun 1000 STellen hinschreiben kann. Er kann nativ nur mit den am häufigsten gebräuchlichen Daten umgehen um diese besonders schnell zu bearbeiten, der REst muss erst durch programmieren erschaffen werden.
Hawke Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 10.09.05 15:02 
@@ Ligh: wo gibt es solche quelltexte??
ich bin ganz neu mit delphi und auch nur just for fun.
mit dem begriff array kann ich nur ein bisschen anfangen...
was ist huge-integer?? große grade zahlen?
wie müsste ich so einen quelltext denn anfangen bzw. aufbauen??
:?: :?:
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: Sa 10.09.05 18:39 
Du machst das dann wie in der Schule beim schriftlich addieren,multiplizieren... . Der Computer bietet dir aber die Möglichkeit dies nicht mit jeder einzelnen Stelle tun zu müssen sondern, nur mit jeder 32 ten bzw. 64 ten wenn du soeinen Prozessor besitzt. Jedoch nur mit der jeweils 32. etc. binären Stelle und nicht dezimalen. Das heißt die einzelnen Zahlen dürfen maximal 2^32 etc. lang sein bzw. da der Compiler die integers wohl als vorzeichenbehaftet interpretieren dürfte nur noch 2^31. Wenn Du exakte ergebnisse willst musst du darauf achten, dass diese Grenzen nicht überschritten werden, da sonst STellen verlorengehen