10. juli 2001 - 19:29Der er
38 kommentarer og 4 løsninger
Regning med store (gigantiske) tal i Delphi
Heyzan !
Jeg har brug for noget source til at regne med tal, der har flere decimaler end Extended. Faktisk helst så mange decimaler som det overhovedet er muligt - fx en 200-300 tusind... De matematiske funktioner, der behøves er: + (addition) - (subtraktion) * (multiplikation) og kvadratrod
Desuden skal rutinen være så hurtig at den kan klare et par tusind beregninger i sekundet (aj, okay måske lidt mindre ville være ok). Men det skal i hvert fald ikke være med strings, dette er for langsomt - har prøvet.
Jeg sidder lige selv og prøver, og er kommet frem til at man *måske* kan dele tallene op i mindre variabler, et simpelt ex: to bytes i stedet for ét word, right? Det ville muliggøre meget store tal og gøre beregninger hurtige.
Flere anledninger. Den vigtigste at jeg er igang med at beregne pi med mange decimaler - rigtig mange decimaler... Men i øvrigt ville jeg utrolig gerne vide hvordan man gør...
Jeg tror ikke helt jeg forstår hvad du mener. Umiddelbart ville jeg da bare bruge single. Det bruger jeg meget når jeg programmere 3D, da man i mange tilfælde skulle bruge store variabler.
OK, nu er jeg med på den... Det var derfor du havde strings med i billedet. Men hvis single kun kan indeholde 7-8 decimaler og extended heller ikke kan indeholde nok decimaler vil du jo aldrig kunne lave en udregning selvom du fandt en løsning (ligesom strings bare hurtigere...
es>> godt forslag, men desværre kan FloatToDecimal kun klare 20-21 decimaler...
egede>> nej jeg elsker bare matematik :-)
borrisholt>> Lyder spændende - jeg er desværre bare næsten invalid i C++ *gg* Jeg har nu næsten fået addition til at virke på variabler større end 64 bit - jeg mangler bare lige at tage højde for om variablerne er signed/unsigned, og hvor kommaet er...
En amerikansk delstat försökte lagstifta att Pi skulle vara avrundat till tre för att det skulle bli enklare. Kan du inte tänka dig nått åt det hållet?
easysoft>> ja jeg vil beregne pi, se min anden kommentar i dette spørgsmål. :-) Jeg har lavet en function til at beregne pi - hvor de interne variabler der benyttes er Extended og de benyttede funktioner er Sqrt til kvadratrod og selvfølgelig de normale aritmetiske operatorer for floating point values. Men da Extended kun kan have 10 digits er det faktisk meget bedre at bruge Delphi\'s indbyggede Pi funktion - og så er jeg jo ikke kommet langt. Derfor dette spørgsmål. Experts-exchange - nå, og jeg som troede at Eksperten.dk var selvopfundet... jaja. Jeg prøver
Borrisholt>> Spændende - ja man kunne jo lave det til et \'flerbruger\'-projekt ligesom SEDI Home eller hvad det nu hedder (rum-aflytnings-projekt). Så kunne man starte med at sætte et mål fx 1 mio. decimaler og så ellers starte tilmeldingen :-)
Der findes en multiplikationsmetode, der hedder Trachtenberg, som er MEGET hurtig til at gange vildt store tal sammen. Jeg brugte den for rigtigt mange år siden til at regne med MEGET store tal på min Commodore 64 - og på den gik det faktisk tilfredsstillende hurtigt!
Søg på google efter \"trachtenberg multiplication\", det giver nogle interessante links.
torbenkoch >> Tiden er løber fra at skrive algoritmer der shifter til højere og venstere for ar gange store tal sammen ... Det kan en p3 processor gøre i en clock cykkel, lige som alle de andere simple ariemtriske funktioner .... Derfor tager en algoritme som \"trachtenberg multiplication\" ikke være forderene at bruge ....
CMS >> Den der pi fætter sender jeg lige til dig ...
Title: Super PI Ver1.1e (calculation of pi up to 33.55 million digits) Keywords: PI MATH WINDOWS In August 1995, the calculation of pi up to 4,294,960,000 decimal digits was succeeded by using a supercomputer at the University of Tokyo. The program was written by D.Takahashi and he collaborated with Dr. Y.Kanada at the computer center, the University of Tokyo. This record should be the current world record. ( Details is shown in the windows help. ) This record-breaking program was ported to personal computer environment such as Windows NT and Windows 95. In order to calculate 33.55 million digits, it takes within 3 days with Pentium 90MHz, 40MB main memory and 340MB available storage. The software is free and the circulation of program is also free!
Tusind tak for svarene. Undskyld, men jeg har været uden Internet og Eksperten (gisp!) i et par døgn...
Well, Hvis man nu var ude på at blære sig overfor kammeraterne tror jeg SuperPi ville være det bedste program at bruge. Hvis man ville have noget blæret sourcekode som man næsten forstår til at beregne pi så er Jens\' svar det bedste. Men begge fritager mig for at have det sjovt, og selv lære / finde på hvordan man mon regner med disse store tal. Jeg havde ligesåmeget som at beregne pi, lyst til bare at tage kvadratroden af 2 eller 5 og få den med tusind decimaler.
cms >> Problemet er at jeg har noget C++ kode der kan gøre det, men jeg har bare ikke tiden til at få det oversat til Delphi. Måske du selv vil prøve kræfter ?
Det ser egentligt ret spændende ud, der er bl.a. en pakke der kan regne med integers på 484,842,745 decimaler !!!(jeg ved godt det ikke er præcis hvad du søger).
Nej Tack! Men det skulle vara nemt att veta vad du vill göra?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.