Dividieren: Wie geht das?



  • 🙄 Nein der Titel ist kein Scherz. 😃

    Ich muss in meinem Programm Zahlen speichern, die viele Vorkomma- UND viele Nachkommastellen haben.
    Also bastel ich mir eine LargeFloat-Klasse, die die Zahl in einen Vorkomma- und einen Nachkommabereich aufteilt.
    Aus z.B. 12.34 wird also (long) 12 und (double) 0.34

    Dann noch die Operatoren für die 4 Grundrechenarten. Dabei das Problem lösen, dieeinzelnen Vor- u. Nachkommabereiche zu verrechnen ohne dabei eine der Zahlen zu einer komplett-Zahl zusammen zu setzen. (sonst würde ja bei großen Zahlen die Ungenauigkeit zuschlagen).
    Plus, Minus, Multipliziern war nicht so schwierig.

    Beim Dividieren komm ich nicht weiter.

    Kann mir jemand weiterhelfen? Oder ein gutes Stichwort für google?



  • Die Zahl nach links Shiften und als Vorkommazahl abspeichern, dann teilen und am Ende wieder zurückshiften.

    Bsp:

    4.01 / 5

    4.01 nach links shiften -> 401 oder 4010

    Division durchführen:
    401/5 bzw. 4010

    Und dann das Ergebnis wieder zurückshiften:
    80,2 -> 0.802



  • ok.
    Aber der Teiler 5 ist eine zusammengesetzte Zahl (aus Vorkomma:5 und Nachkomma:0 )



  • Ich will nur mal anmerken, dass das so keine LargeFloat Klasse wird, wenn das Komma fest ist.



  • @gloebl: mußt du das tatsächlich selbst programmieren?

    zum Einen gibt es Programmiersprachen, die "out of the box" mit beliebig langen Zahlen rechnen können (python zb)

    zum Anderen gibt es mehrere Libs für C/C++ um mit beliebig langen Zahlen zu rechnen. Einfach mal g0cke1n nach "bignum" "large arithmetics" usw



  • Ja GMP-Lib o.ä. beschaffen ist einfacher als selber machen (und verstehen)

    und Fett absaugen lassen ist einfacher als Sport treiben. 😃 😃

    Falls es eine selfmade-Lösung nicht existiert oder zu kompliziert wäre, gings auch in Einfach.
    Aber im Moment wärs mir lieber eine Funktion zu schreiben, statt mir ne komplette Bibliothek zu holen...



  • gloebl schrieb:

    und Fett absaugen lassen ist einfacher als Sport treiben. 😃 😃

    stimmt eigentlich - und ich Depp bin in den letzten anderthalb Jahren 9-mal Marathon gelaufen, dabei bin ich nicht mal übergewichtig 😡


Anmelden zum Antworten