phpnewbie: Dezimalzahl als Bruch darstellen?

Also bei meinem vor kurzem selbstgeschriebenen Taschenrechner ,wollte ich jetzt noch einbaun, das er das Ergebnis in einen Bruchumwandeln also die Dezimalzahlen.Wie geht das?
mfg
noob

  1. Hallo,

    irgendwie erinnert mich das an [pref:t=37687&m=206297]... So ein Zufall aber auch.

    Viele Grüße
    Ben

    --
    Phantasie ist wichtiger als Wissen. - Albert Einstein
  2. Moin!

    Also bei meinem vor kurzem selbstgeschriebenen Taschenrechner ,wollte ich jetzt noch einbaun, das er das Ergebnis in einen Bruchumwandeln also die Dezimalzahlen.Wie geht das?

    Schwierig, sehr schwierig.

    Wenn du "1 geteilt durch 3" rechnest, kriegst du dezimal 0,333333333333 raus. Mathematisch kriegst du aber 1/3 raus. Die Dezimalzahl ist aber nicht genau ein Drittel, sondern weniger (es gehen unendlich viele Nachkommastellen verloren), du kannst also die Zahl nie mehr in den richtigen Bruch umrechnen.

    Wenn du mit richtigen Brüchen rechnen willst, darfst du Zähler und Nenner niemals echt teilen, sondern mußt sie getrennt behandeln. Die Regeln zum Kürzen und Erweitern von Brüchen, sowie die Behandlung von Doppelbrüchen etc. müssen dann zu deinem Handwerkszeug gehören. Diese Aufgabe ist interessant, aber keinesfalls trivial.

    - Sven Rautenberg

    --
    "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
  3. Holladiewaldfee,

    Also bei meinem vor kurzem selbstgeschriebenen Taschenrechner ,wollte ich jetzt noch einbaun, das er das Ergebnis in einen Bruchumwandeln also die Dezimalzahlen.Wie geht das?

    Herzlich willkommen in der wunderbaren Welt der Reihenentwicklung ;-)

    Prinzipielle Vorgehensweise:

    • Muster in der Dezimalzahl erkennen (d.h: Periode, Periodenanfang ermitteln)
    • Nächsthöhere Zehnerpotenz ermitteln
    • Reihenentwicklung machen (geometrische Reihe)
    • Über's Ergebnis freuen

    Ein kleines Beispiel: 0.45691691691691691usw.

    • Muster erkennen:
      Teil 1: 0.45
      Teil 2: Periode 691

    • Zehnerpotenzen ermitteln:
      Teil 1: 45/100
      Teil 2: Zwei Stellen nach links rücken
      => 691/1000

    • Reihenentwicklung
      Teil 1: Erübrigt sich
      Teil 2: Vorfaktor * Reihe
      => 691/100 * Summe(i=1 bis unendl.){(1/1000)^i}
      => 691/100 * 1/1000 * Summe(i=0 bis unendl.){(1/1000)^i}
      => Reihe entwickeln (geom. Reihe):
      => 691/100 * 1/1000 * 1/(1-1/1000)) = 691/99900

    • Über's Ergebnis freuen:
      q = 45/100 + 691/99900 = 45646/99900 (noch kürzen!)

    Und dann darfst Du Dir bei der Mustererkennung noch einen Algorithmus einfallen lassen, wie Du reelle Zahlen von rationalen unterscheiden willst ...

    Ciao,

    Harry

    --
      Hä? Was? Signatur?! Kann man das essen?