Avatar billede solve Nybegynder
26. juni 2002 - 00:13 Der er 14 kommentarer og
1 løsning

Flere decimaler på udregningerne

Hvordan får jeg flere decimaler på dette:
$1 = $var1 / $var2
Avatar billede tipsen Nybegynder
26. juni 2002 - 00:21 #1
Du bruger number_format() eller printf()
Avatar billede solve Nybegynder
26. juni 2002 - 00:21 #2
Hvis den nu gav:
33,3333333333333 hvordan får jeg så vist:
33,3333333333333333333333 istedet?
Avatar billede solve Nybegynder
26. juni 2002 - 00:21 #3
tipsen, vil du lige give et eksempel?
Avatar billede tipsen Nybegynder
26. juni 2002 - 00:25 #4
ok - hvis du vil lave udregninger med større præcision, skal du bruge pakken BCMath - se nærmere på: http://dk.php.net/manual/en/ref.bc.php

NB: Det er vist ikke 100% sikkert, at dette lib er inkluderet i standardinstallationen - men det finder du jo hurtigt ud af!

Glem de to ovennævnte funktioner da de kun beskæftiger sig med udskrivning af variablene!
Avatar billede brianfrisch Nybegynder
26. juni 2002 - 00:26 #5
Jeg bruger følgende metode. (Skift tallet 20 ud med et højere eller lavere tal alt efter hvor mange decimaler du ønsker.)

$1 = substr($1, 0, 20);
Avatar billede tipsen Nybegynder
26. juni 2002 - 00:27 #6
Eks:

echo bcdiv("100", "3" , 20);
Avatar billede tipsen Nybegynder
26. juni 2002 - 00:28 #7
brian: $1 er så et godt eksempel på et ulovligt variabelnavn ;-)

Desuden vil php ikke normalt regne med 20 decimalers præcision internt, så et resultat med 20 decimaler vil alligevel være meningsløst...
Avatar billede jakoba Nybegynder
26. juni 2002 - 00:29 #8
det du spørger om der der ingen fornuft i. Der er et begrænset antal cifre der er korrekte i et tal. og det antal cifre skriver php, at skrive flere cifre er rent gætteri.
Avatar billede solve Nybegynder
26. juni 2002 - 00:31 #9
brian: Det virker ikke, da mit problem ikke er at der kommer for mange tegn, men at der kommer for lidt.
Avatar billede solve Nybegynder
26. juni 2002 - 00:32 #10
jakoba: Jo flere cifre, jo nærmere kommer man da det faktiske talt?!
Avatar billede jakoba Nybegynder
26. juni 2002 - 00:46 #11
solve >> næe.

hvert tal lagre i computeren i et bestemt antal bit, vist noget i retning af 40 bit, idet du dividerer bliver der lavet et nyt tal i det format, og idet det tal klemmes ind i de bit mister det den præcicion du efterlyser. hvert ciffer fylder lidt over 3 bit så der er kun ca 12 eller 13 præcice cifre i det tal du har at udskrive.

mvh Jakoba
Avatar billede tomsommer Juniormester
26. juni 2002 - 00:48 #12
det kan ændres i INI filen

; The number of significant digits displayed in floating point numbers.
precision    =  12
Avatar billede tipsen Nybegynder
26. juni 2002 - 00:53 #13
Den ændring vil nok stadig ikke ændre det interne beregningsgrundlag...
Avatar billede brianfrisch Nybegynder
26. juni 2002 - 01:00 #14
tipsen> Det med det ulovlige variabelnavn er jeg godt klar over, men nu var $1 jo allerede skrevet i spørgsmålet, så hvorfor ikke fortsætte med det, for ikke at give for stor forvirring :) ?!
Avatar billede tipsen Nybegynder
26. juni 2002 - 01:09 #15
hehe - det havde jeg faktisk ikke set i det oprindelige ;-)

NB: Der er forøvrigt et issue mht. scaling ved brug af bcdiv - drop det og rund af med enten number_format() eller printf().
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