| Off-Topic Diskussionen Kein Platz für Deine Frage gefunden? Dann bist Du hier genau richtig! |
 |

01-07-2011, 19:55
|
|
fabio
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Ort: Wetzikon, ZH, CH
Beiträge: 407
|
|
Mathematische Funktion um x-te Stelle in irrationaler Zahl zu finden
hi
Die Frage hat nichts spezifisch mit PHP zu tun, aber dieses Forum ist das welches ich als intelligentestes empfinde.
Und zwar geht es quasi um die Funktion substr() in einer mathematischen Formel.
Ich brauche eine funktion f(x)=y welche mir die x-te Nachkommezah einer irrationaler Zahl liefert.
Also bei Pi (3.14159265) wäre es bei f(1)=1, f(2)=4, f(3)=1, f(4)=5
Mit PHP oder selbst primitiven Funktionen wie floor/ceil wäre es sehr einfach zu lösen, nur eben, ich bräuchte es als mathematische Formel, die man theoretisch in den Taschenrechner eintippen kann oder aber auch ableiten.
|

01-07-2011, 20:12
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
f(x) = (zahl * 10^x) mod 10
PHP-Code:
function dezimalstelle($zahl, $x) { return $zahl * pow(10, $x) % 10; }
var_dump(M_PI); // float 3.1415926535898
var_dump(dezimalstelle(M_PI, 1)); // int 1
var_dump(dezimalstelle(M_PI, 2)); // int 4
var_dump(dezimalstelle(M_PI, 3)); // int 1
|

01-07-2011, 20:17
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
meinst du speziell für Pi oder allgemein für beliebige Zahlen? Das Problem ist, dass PHP diese Zahlen nur mit der internen Genauigkeit repräsentiert und da ist nach 14 Stellen (Standardkonfiguration) halt Schluss, bzw. bekommst du dann falsche Ziffern geliefert.
Daher kannst du höchstens auf PHP: Mathematical Extensions - Manual ausweichen.
Zu deiner Frage: Mit floor, Multiplikation und Subtraktion kann man eine Stelle innerhalb der PHP-Genauigkeit extrahieren, z. B. die 9 (5. Nachkommastelle) in 3.1415 9265 wie folgt:
PHP-Code:
$n = 3.14159265; $i = 5; $digit = floor($n * pow(10, $i) - 10 * floor($n * pow(10, $i - 1))); // = 9
Edit: war wohl zu spät, Modulo ist natürlich die sinnvollere Variante.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (01-07-2011 um 20:20 Uhr)
|

02-07-2011, 10:36
|
|
fabio
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Ort: Wetzikon, ZH, CH
Beiträge: 407
|
|
Hi
Ja, eben, es geht mir genau NICHT darum, es mit PHP zu lösen. 
Das wäre was einfaches.
Es geht mir mehr darum, eine mathematische Formel zu haben, die auch nur mathematische Operatoren benutzt. Und da gibt es leider kein "floor".
Also eben, eine Formel, welche ich auf einem Blatt Papier lösen könnte, ableiten, kürzen, usw.
|

02-07-2011, 11:15
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
f(x) = (zahl * 10^x) mod 10
|

02-07-2011, 11:22
|
|
fabio
Registrierter Benutzer
|
|
Registriert seit: Aug 2003
Ort: Wetzikon, ZH, CH
Beiträge: 407
|
|
Mein Fehler, hast Recht, hab nur den PHP-Teil gesehen und die oberste Funktion übersehen.
Danke, klappt so.
|

02-07-2011, 11:33
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Auch in meinem PHP-Teil kommt kein floor() vor
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|