robgar Skrevet 10. november 2004 Del Skrevet 10. november 2004 (endret) Hei, funderte litt på Hvordan man kunne ta potensregning i php. Kom fram til denne enkle løsningen, men den kan ikke bla. ta roter (1/2 (n^0.5)) osv. Her er koden: <form name="form1" method="get" action=""> <input name="do" type="text" id="do"> <input type="submit" value="Regn ut"> </form> <? $formula = $_GET['do']; if (!empty($formula)) { $tall = 1; list($G, $e) = split("\^", $formula); print $G . " opphevet i " .$e. " potens = "; for ($i=0;$i<$e;$i++) { $tall = $tall*$G; } if ($tall == 0) { $tall=1; } elseif ($e == 1) { $tall = $G; } } print $tall; ?> Den fungerer som sagt fint på eksponenter i heltall. (ikke desimaler). Det er 2 spørsmål jeg har; 1. Når jeg tar 23^45 Får jeg dette ut av skriptet mitt: 23 opphevet i 45 potens = 1.8956258430116E+061 Er dette en form for naturlig form? (1,23 * 10^3 (1230)) eller står den E,en rett og slett for Error? 2. Har du noen ide om hvordan jeg kan få til å regne ut brøker med php? Det vil si f.eks 4^0.5 = 2, 16^0.5 = 4 (Kvadratrota). På forhånd takk Endret 10. november 2004 av robgar Lenke til kommentar
P@rm@nn Skrevet 10. november 2004 Del Skrevet 10. november 2004 10^10 = 1e+10 23^45 er altså ca 1,8956258430116*(10^61) På spm 2 vet jeg ikke, har kansje noe med at jeg ikke kan php:P Men er ikke noe med typen, int eller real/double(eller skal php fikse det for deg)? Lenke til kommentar
robgar Skrevet 10. november 2004 Forfatter Del Skrevet 10. november 2004 Takk, anngående 2, var det at jeg skulle kunne regne ut kvadratrota til 2345, Det vil si 2345^(1/2). Lenke til kommentar
diskvask Skrevet 10. november 2004 Del Skrevet 10. november 2004 http://www.php.net/manual/en/ref.math.php Opphøyning: pow() Rota: sqrt() Lenke til kommentar
robgar Skrevet 10. november 2004 Forfatter Del Skrevet 10. november 2004 (endret) En annen ting, PHP har sinne begrensninger, når jeg tok 2000^1000 Kom det bare: 1.#INF, Det vil si at PHP stopper å regne ut for store tall. Men om jeg på et eller annet vis hadde gjort dette om til en streng , altså tekst og ikke tall, i for-løkken, så vil det gå, men hvordan!`? EDIT: Takk for de. Endret 10. november 2004 av robgar Lenke til kommentar
jorgis Skrevet 10. november 2004 Del Skrevet 10. november 2004 Du kan bruke settype() til å skubbe noe over som streng, f.eks. slik: settype(234324234, "string"); Det skal komme ut igjen som "234324234". Lenke til kommentar
christt Skrevet 10. november 2004 Del Skrevet 10. november 2004 En annen ting, PHP har sinne begrensninger, når jeg tok 2000^1000 Kom det bare: 1.#INF ^ er bitvis-XORing ikke "opphøyd i" som dette tegnet ofte er på kalkulatorer o.l. Se hva PHP manualen skriver om ^ her Lenke til kommentar
robgar Skrevet 11. november 2004 Forfatter Del Skrevet 11. november 2004 (endret) En annen ting, PHP har sinne begrensninger, når jeg tok 2000^1000 Kom det bare: 1.#INF ^ er bitvis-XORing ikke "opphøyd i" som dette tegnet ofte er på kalkulatorer o.l. Se hva PHP manualen skriver om ^ her Jeg lærer noe nytt om PHP hver dag. Men det var i mitt script, og ikke i pow(), det(mitt) lager en loop så lenge i er mindre enn eksponenten og ganger tallet med Grunntallet. Der bruker jeg ^ i en egen tekst boks. | 2000^1000 | regn ut Endret 11. november 2004 av robgar Lenke til kommentar
Torbjørn Skrevet 11. november 2004 Del Skrevet 11. november 2004 En annen ting, PHP har sinne begrensninger, når jeg tok 2000^1000 Kom det bare: 1.#INF ^ er bitvis-XORing ikke "opphøyd i" som dette tegnet ofte er på kalkulatorer o.l. Se hva PHP manualen skriver om ^ her Han bruker ikke ^ annet enn som separator: list($G, $e) = split("\^", $formula); Lenke til kommentar
christt Skrevet 11. november 2004 Del Skrevet 11. november 2004 Ok. Beklager. Var litt rask. 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å