Avatar billede krumel Nybegynder
10. maj 2002 - 20:45 Der er 14 kommentarer

mange decimaler

Jeg sidder og skal til at lave nogle MEGET præcise udregninger i PHP til det skal jeg bruge pi.

pi() udskriver PHP som 3.1415926535898 men hvad gør jeg hvis jeg nu gerne vil have lidt flere decimaler på ?

Dette gælder imidlertid ikke kun pi() men stort set alle regnestykker.
Hvordan får jeg PHP til at udskrive resultaterne med mere end 13 decimaler. (skal helst bruge 50)
Avatar billede well_r Nybegynder
10. maj 2002 - 20:51 #1
av
Avatar billede well_r Nybegynder
10. maj 2002 - 20:51 #2
det var da MEEEEEEEGET præcist! :D
Avatar billede jespernaur Nybegynder
10. maj 2002 - 21:04 #3
Prøv at se på PHP funktionerne i BCMath - de tillader regning med vilkårlig høj
præcision.
Avatar billede webmasterdk Praktikant
10. maj 2002 - 21:33 #4
istedet for pi(), prøv at lave en var med $pi = "22/2"
så kan du evt. sætte round($pi,50);
Avatar billede knast Nybegynder
10. maj 2002 - 21:47 #5
@webmasterdk

1) jeg går ud fra du mener 22/7 da 22/2 er 11 ;)

2) 22/7 er langt fra lig pi, så vidt jeg husker holder den kun 3-4 decimaler, og hvis han skal bruge 50 decimaler, tror jeg ikke det er aktuelt.
Avatar billede webmasterdk Praktikant
10. maj 2002 - 21:55 #6
Ja, sorry mente 22/7, og det er da ud fra det at pi er beregnet, de fik vi da ihvertfald og vide dengang i folkeskolen....
Avatar billede knast Nybegynder
10. maj 2002 - 22:22 #7
det er nu desværre ikke helt rigtigt ;)

Pi er forholdet mellem arealet og omkredsen af en cirkel, og de der 22/7 er kun noget man har fundet på til grundskoleelever, så de kunne regne med det, før man fik lommeregnere, men indbygged shampo og hvad de ellers har idag ;)
Avatar billede wizprod.com Nybegynder
10. maj 2002 - 22:23 #8
webmasterdk, tror du skal gå ned til matematik lærer og bede om at få pengene tilbage :P
pi == 3,14159265359
22/7 == 3,14285714286

:)
Avatar billede webmasterdk Praktikant
10. maj 2002 - 22:27 #9
wizprod.com >> Hjælper ikke!
Mate var grunden til at jeg ikke kunne gå op til eksamen på HTX her til sommer!
Avatar billede wizprod.com Nybegynder
10. maj 2002 - 22:36 #10
jeg ved faktisk ikke om det ville virke, men prøv at definere din var som double, det burde jo give en del mere præcision!
Avatar billede jespernaur Nybegynder
10. maj 2002 - 22:49 #11
Avatar billede tipsen Nybegynder
10. maj 2002 - 23:02 #12
knast: Det var så rent faktisk Archimedes der fandt ud af at approksimere pi og fandt ud af, at 3 10/71 < pi < 3 1/7 (3 1/7 = 22/7) ved hjælp af en iterativ proces, der muliggør en uendelig præcis approksimation! (Så det var ikke kun til ære for grundskoleeleverne!)

Pi er så efterhånden ved hjælp af vore tids computere approksimeret med adskillige milliarder decimaler, hvilket vist skulle dække de flestes behov for præcision.

(pi = 3.141592653589793238462643 for bare at give lidt flere...)

Og bortset fra det er jespernaur's svar korrekt - du har brug for BCMath modulet! Dog kan det undre mig lidt, at du vil bruge et sprog som PHP til denne type udregninger - afhængig af formålet og antallet af beregninger, kan du risikere at det går meget langsomt! Vær desuden opmærksom på, at alene det, at skrive en udregning korrekt er ekstrem vigtig når du har arbejder med den præcision!

Eksempel:

$StortTal/3*2 != $StortTal*2/3

Hvis du i forvejen har et stort tal og ganger det med 2 er det ikke sikkert det kan rummes i hukommelsen og så holder udregningen ikke længere - tilsvarende kan gøre sig gældende med meget små tal, hvor decimalerne i fare for at forsvinde! Så hvis du har brug meget høj præcision vil jeg foreslå at du læser noget om emnet, da BCMath ellers vil være at skyde gråspurve med kanoner - du vil alligevel smide præcisionen væk ved nogle tåbelige beregninger!
Avatar billede tipsen Nybegynder
10. maj 2002 - 23:09 #13
Her er de første 20 mio decimaler (hvem når længst :-))

ftp://www.cc.u-tokyo.ac.jp/pub/pi200m/pi200m.ascii.01of20
Avatar billede tipsen Nybegynder
10. maj 2002 - 23:12 #14
Citat fra: http://www.verbose.net/Pi.html

The first 51 digits of pi

The important ones. For all practical purposes no more than 10 digits of pi are required for mathematic computation, however even with astronomically precise calculations no more than fifty are really necessary. Why is 51 so significant you might wonder, well it's not. The truth is that pi is easier to memerize in blocks - blocks of 10 are nice since that follows our counting system. To stay aesthetically pleasing, it makes more sense to write out 5 blocks of 10 of the respective digits. With the initial value of 3, that adds up to 51.


3 .  1 4 1 5 9 2 6 5 3 5
8 9 7 9 3 2 3 8 4 6    2 6 4 3 3 8 3 2 7 9
5 0 2 8 8 4 1 9 7 1    6 9 3 9 9 3 7 5 1 0
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester