Evju Skrevet 18. oktober 2006 Del Skrevet 18. oktober 2006 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
blackbrrd Skrevet 18. oktober 2006 Del Skrevet 18. oktober 2006 (endret) 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 18. oktober 2006 av blackbrrd Lenke til kommentar
Evju Skrevet 18. oktober 2006 Forfatter Del Skrevet 18. oktober 2006 (endret) 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 18. oktober 2006 av Evju Lenke til kommentar
rusolvan Skrevet 18. oktober 2006 Del Skrevet 18. oktober 2006 (endret) 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 18. oktober 2006 av rusolvan Lenke til kommentar
blackbrrd Skrevet 18. oktober 2006 Del Skrevet 18. oktober 2006 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå