rechnen mit dezimalbrüchen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • rechnen mit dezimalbrüchen

    hab ein script geschrieben das mit dezimalbrüchen rechnet, nun leider hab ich das problem dass die dezimalzahlen bis zu 20 nachkommastellen haben werden...


    über den precision wert den ich von 12 auf nen höheren wert gesetzt habe ist mir trotzdem nur ein maximum von 17 nachkommastellen gegeben...

    hat jemand ne ahnung wie ich das machen könnte??....

    bzw. ich bräuchte dann etwas welches aus 0.123456789123456789

    die ersten paar nachkommastellen wegschneidet ,
    also 0.6789123456789 macht...und dann wenns fertig gerechnet hat die 12345 wieder hinschreibt am ende denn der wert verändert sich net,

    hoff mir kann jemand helfen
    mfg

  • #2
    hmm, bc

    Kommentar


    • #3
      Original geschrieben von TobiaZ
      hmm, bc
      falls nicht vorhanden, tuts eventuell auch eine verkettete Liste mit Objekten ... aber, naja da würde ich eher zusehen, dass das da oben funktioniert ^^,

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        Warum schiebst du nicht das Komma so weit nach rechts, bis du ganze Zahlen hast, rechnest dann und schiebst beim Ergebnis das Komma dann wieder nach links?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Original geschrieben von mrhappiness
          Warum schiebst du nicht das Komma so weit nach rechts, bis du ganze Zahlen hast, rechnest dann und schiebst beim Ergebnis das Komma dann wieder nach links?
          [X] Du möchtest diese Aussage nach ein wenig Überdenken, insb. was es bei Gleitkommazahlen mit der Mantisse auf sich hat, (vermutlich) zurückziehen.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Wenn man die Zahlen als string ansieht und mit number_format geeignet formatiert, sollte es doch kein Problem sein, oder?
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Bin mir jetzt nicht ganz sicher, was gefordert ist (krude Problembeschreibung mal wieder).

              Wenn aber die Genauigkeit auch beim Rechnen mit den Zahlen erhalten werden soll, bringt ihm dein Vorschlag m.E. wenig.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Ansichtssache:

                Angenommen, ich könnte nur mit 2 Nachkommastellen rechnen:
                1,25 * 2,5 = 3,12

                Kann ich mit mindestens 3 Nachkommastellen rechnen:
                1,25 * 2,5 = 3,125

                Mit 2 Nachkommastellen und Kommeverschieberei

                1,25 * 100 = 125
                2,5 * 10 = 25
                125 * 25 = 3125
                Komma an dritter Stelle von rechts einfügen (natürlich nur für die Ausgabe): 3,125


                Die Genauigkeit beim Rechnen bleibt meines Erachtens erhalten, nur eben in einer anderen Zehnerpotenz und bei der Ausgabe kann ja das Komma in die als string ausgegeben Zahl eingefügt werden.
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Original geschrieben von mrhappiness
                  Die Genauigkeit beim Rechnen bleibt meines Erachtens erhalten
                  Und da liegt meines Erachtens dein Denkfehler, wenn wir von Zahlenbereichen reden, die im Eingangsposting genannt wurden - bis zu 20 Nachkommastellen.
                  Wenn du die mit entsprechend hohen Zehnerpotenzen multiplizierst, um auf "glatte" Zahlen zu kommen, kann PHP die intern (*) nicht mehr als Integer darstellen, also werden sie in Float umgewandelt - und da kommt eben wieder die Mantisse ins Spiel, die die Darstellung von solchen Gleitkommazahlen nur mit einer bestimmten "Genauigkeit" erlaubt. Genauigkeit bedeutet hier aber nicht "Anzahl Stellen nach dem Komma", sondern insgesamt die mögliche Anzahl signifikanter Stellen (siehe Erklärung bei der wikipedia).
                  Also erreichst du dadurch bei entsprechend großer Anzahl Nachkommastellen, die nach deiner Multiplikation in entsprechend großen Ganzzahlen resultieren, keinen Vorteil bei der Genauigkeit ...


                  (*) ohne Nutzung von Zusatzmodulen wie bspw. dem bereits erwähnten bc.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    OK, du hast gewonnen.
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar

                    Lädt...
                    X