problem mit kommastellenberechnung

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/problem_mit_kommastellenberechnung_31322/page_1 - zur Vollversion wechseln!


flaimo schrieb am 13.04.2002 um 06:10

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 schrieb am 13.04.2002 um 07:18

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 schrieb am 13.04.2002 um 11:32

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 schrieb am 13.04.2002 um 12:27

oh sorry. ist natürlich von der implementierung abhängig!


flaimo schrieb am 13.04.2002 um 13:01

der fehler tritt sowohl unter WAMP als auch unter LAMP auf


Ringding schrieb am 13.04.2002 um 15:05

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




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025