"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

problem mit kommastellenberechnung

flaimo 13.04.2002 - 06:10 584 5
Posts

flaimo

ILFTKYS
Avatar
Registered: Dec 2001
Location: ask a ninja
Posts: 872
hier die angabe die ich bekommen habe:

Zitat
Erstellen Sie ein PHP-Skript, das die Zahl e (2,71828 ... ) aus der Reihe 1 + 1/1! + 1/2! + 1/3! + ... + 1/n! entwickelt. Die Reihe soll dann abgebrochen werden, wenn der Betrag der Differenz zweier aufeineanderfolgender Näherungen kleiner epsilon ist (z.B. epsilon <= 0.00001). Die Eingabe des epsilon erfolgt durch ein Formular (ein Textfeld, ein Submit-Button). Das PHP Skript soll ein sogenanntes “Affenformular” sein, d.h. ein Formular das sich selbst aufruft.


so weit so gut. hab's ausprogrammiert, allerdings wenn ich jetzt eine zahl mit sehr viel nullkommastellen eingebe und dadurch die reihe sehr hoch raufgeht, packt das php anscheinend nicht mehr. kann das sein? sobald es mehr als 1 + ... + 1/17! rechnen sollte kommt immer das gleiche für e raus bzw es gibt nicht mehr als 40 nachkommastellen....

manalishi

tl;dr
Avatar
Registered: Feb 2001
Location: Feldkirch
Posts: 5977
das ist sehr gut möglich, das kommt drauf an, welcher datentyp von php intern verwendet. normalerweise hat man nicht so aufwändige arithmetische aufgaben mit php zu bewältigen ;) ich schätz mal es handelt sich und ein float oder double

float hat eine größe von 4 bytes, mindestgenauigkeit 6 nachkommastellen

double hat eine größe von 8 bytes, mindestgenauigkeit 10 nachkommastellen

long double hat eine größe von 10 bytes, mindestgenauigkeit von 10 nachkommastellen

so schaut's in c aus, und php ist sehr c-ähnlich, drum denke ich dass es da keinen großen unterschied geben kann..

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Zitat von manalishi
float hat eine größe von 4 bytes, mindestgenauigkeit 6 nachkommastellen

double hat eine größe von 8 bytes, mindestgenauigkeit 10 nachkommastellen

long double hat eine größe von 10 bytes, mindestgenauigkeit von 10 nachkommastellen

das hängt natürlich von der Plattform ab, bei den üblichen Win32 Compilern gibts z.B. kein "long double", bzw ist das genauso lang wie "double"...

manalishi

tl;dr
Avatar
Registered: Feb 2001
Location: Feldkirch
Posts: 5977
oh sorry. ist natürlich von der implementierung abhängig!

flaimo

ILFTKYS
Avatar
Registered: Dec 2001
Location: ask a ninja
Posts: 872
der fehler tritt sowohl unter WAMP als auch unter LAMP auf

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Kann auch nicht anders sein, weil die Genauigkeit nun mal beschränkt ist. Wenn du mehr brauchst, musst du eine geeignete Library verwenden, z.B. GMP
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz