Gå til innhold

Lagre desimaltall i heltalls-array


Anbefalte innlegg

Dette vil kanskje høres merkelig ut, men jeg har et konkret probem jeg ønsker å regne ut:

 

16*arctan(1/5)-4*arctan(1/239)

 

(Kjent som Machin's formel for pi)

 

Arctan er en funksjon som kan skrives på denne måten:

 

arctan x = x - 1/x^3 + 1/x^5 - 1/x^7 ..... ut i det uendelige.

 

Spørsmålet mitt er da hvordan jeg kan lagre de forskjellige leddene og rekken av de i heltallsarrayer. Double blir en altfor upresis variabel her. Dersom jeg ønsker å regne ut 1/239^10, får vi en sinnsykt lite tall, men jeg ønsker å bruke det i en array...

 

Noen tips anyone?

Lenke til kommentar
Videoannonse
Annonse

BigDecimal er laget for denne jobben.

 

Hvis dette er en skoleoppgave hvor du ikke har lov å bruke BigDecimal så anbefaler jeg å lage din egen BigDecimal klasse ;) Den kan godt bruke arrays internt ;) - Se på BigDecimal klassen for eksempel.

 

BigDecimal tror jeg du finner i java.math.BigDecimal

Endret av blackbrrd
Lenke til kommentar
BigDecimal er laget for denne jobben.

 

Hvis dette er en skoleoppgave hvor du ikke har lov å bruke BigDecimal så anbefaler jeg å lage din egen BigDecimal klasse ;) Den kan godt bruke arrays internt ;) - Se på BigDecimal klassen for eksempel.

 

BigDecimal tror jeg du finner i java.math.BigDecimal

7096863[/snapback]

 

Har vært inne på den tanken, men det er som du sier er det en skoleoppgave som jeg ikke har lov til å bruke BigDecimal til. Men hvordan i all verden skal jeg klare å lage en BigDecimal-klasse selv?

Endret av Evju
Lenke til kommentar

Ja, her er nok BigDecimal klassen det rette å bruke

 

Sun Java API

 

der ligger klassebiblioteket fra Sun....

 

I tillegg til BigDecimal kan du ta en titt på MathContext klassen, siden slike objekter ofte brukes i sammenheng med store BigDecimal's, spesielt på mulitply(), pow() osv metodene... eks: etBigDecimalObjekt.multiply(etAnnetBigDecimalObjekt, MathContext.UNLIMITED)

 

Men er det slik at du må ha rekkeutviklingene i en array? du kan ikke dra med deg en BigDecimal gjennom en über stor for-løkke?

Eller kanskje du skal ha PI med ekstremt mange decimaler ?

 

Når det gjelder rekkeutvikling for utrenging av PI så er det flere rekke som også brukes til å regne PI med, eks:

 

PI/4 = 12arctan(1/18)+8arctan(1/57)-5tan(1/239) :)

Uten å være det minste sikker så er det vel muigens noe sånt SuperPI bruker for å hardkjøre CPU'er...? :)

 

Her er forresten PI med endel desimaler:

PI

 

Hvis du er spesielt interessert :)

Endret av rusolvan
Lenke til kommentar
BigDecimal er laget for denne jobben.

 

Hvis dette er en skoleoppgave hvor du ikke har lov å bruke BigDecimal så anbefaler jeg å lage din egen BigDecimal klasse ;) Den kan godt bruke arrays internt ;) - Se på BigDecimal klassen for eksempel.

 

BigDecimal tror jeg du finner i java.math.BigDecimal

7096863[/snapback]

 

Har vært inne på den tanken, men det er som du sier er det en skoleoppgave som jeg ikke har lov til å bruke BigDecimal til. Men hvordan i all verden skal jeg klare å lage en BigDecimal-klasse selv?

7097019[/snapback]

 

Ved å lage en klasse som implementerer de delene av BigDecimal som du selv ville brukt. Du kan jo jukse litt ved å se på implementasjonen til Sun, kildekoden følger med JDK/SDK-ene etter hva jeg husker. :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...