Gleitkommazahl in Bruch umwandeln



  • Ja, wie macht man denn das? Ich möchte z. B. 2.91666 (Periode 6) in einen Bruch umwandeln.
    Danke.



  • Ich denk mir das so:
    2.916666666 = 2.91 + 0.006666666
    2.91 = 291/100
    0.66666 = 2/3
    0.006666 = 2/300

    2.9166666 = 291/100 + 2/300 = 2 11/12

    Ist das so richtig gedacht?



  • ich würde es so machen:

    ....

    ja genau so wie du es grad hingeschrieben hast



  • Ja stimmt

    Man zerlegt die Zahl und macht Brüch draus die man wieder addiert.



  • Im Prinzip ist die Überlegung ja OK, mit mehreren Brüchen aber frei nach dem Motto:
    Warum einfach, wenn's auch umständlich geht?

    Wenn eine Dezimalzahl auf einer Ziffer periodisch endet,
    wird Multiplikation mit 9 diese Periode vermeiden, weil 0.11_ * 9 = 1
    Und 2.916666666 * 9 = 26.25, also schon fast eine glatte Zahl.

    Wenn eine Dezimalzahl auf 5 endet, wird Multiplikation mit 2 um eine Nachkommastelle reduzieren.
    26.25 * 2 = 52.5
    52.5 * 2 = 105
    Also 105 / (9*2*2) = 2.91666666
    Das läßt sich dann wiederum durch 3 kürzen,
    also 35 / (3*2*2) = 2.916666666
    oder schlicht 35/12



  • @all: Danke.



  • bird schrieb:

    Ja, wie macht man denn das? Ich möchte z. B. 2.91666 (Periode 6) in einen Bruch umwandeln.
    Danke.

    sag doch gleich, daß du das für deine bruchzahlen-klasse brauchst oder poste das in rund um die programmierung.
    für die bruchklasse bietet sich eher an, den guten bruch einzuschachteln.

    sagen wir mal, 1/0 sei sehr groß.
    x liegt sicher zwischen 0/1 und 1/0.
    die "mitte" zwischen 0/1 und 1/0 sei 1/1 (zähler+zähler, nenner+nenner).
    liegt x links oder recht der "mitte"?
    rechts.
    als x nehme ich mal 0.91666, den vorkommateil kann man mal weglassen, damit's schneller geht.
    0/1 <= x <= 1/0
    0/1 <= x <= 1/1
    1/2 <= x <= 1/1
    2/3 <= x <= 1/1
    3/4 <= x <= 1/1
    4/5 <= x <= 1/1
    5/6 <= x <= 1/1
    6/7 <= x <= 1/1
    7/8 <= x <= 1/1
    8/9 <= x <= 1/1
    9/10 <= x <= 1/1
    10/11 <= x <= 1/1
    11/12
    ups, schon angekommen.

    die stärke des verfahrens liegt aber nicht darin, manchmal so doof zu treffen, wie hier. es liefert prima näherungen, wenn es nicht glatt geht.

    x=3.1415926535897932384626433832795
    0/1 <= x <= 1/0
    1/1 <= x <= 1/0
    2/1 <= x <= 1/0
    3/1 <= x <= 1/0
    3/1 <= x <= 4/1
    3/1 <= x <= 7/2
    3/1 <= x <= 10/3
    3/1 <= x <= 13/4
    3/1 <= x <= 16/5
    3/1 <= x <= 19/6
    3/1 <= x <= 22/7
    aha, die klassische näherung für pi.
    ein paar schritte weiter taucht netterweise auch die berühmte näherung 355/113 auf.

    außerdem ist es leicht, fast schon zu leicht, zu programmieren.



  • Wie heißt denn dieses Verfahren?
    Ich habe versucht, es anhand der Beispiele mit anderen Zahlen nachzuvollziehen, komme aber nicht weiter. Wenn das Verfahren einen Namen hat, kann ich bin bisschen googeln!



  • gute frage. ich habs selber erfunden. leider nicht als erster.
    ich google mal, ob ichs finde.
    da isses:
    http://planetmath.org/?op=getobj&from=objects&name=SternBrocotTree



  • volkard schrieb:

    gute frage. ich habs selber erfunden. leider nicht als erster.

    Beantrage doch ein Patent darauf... 😃 😉


Anmelden zum Antworten