Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Konvertierung von Excel -> PHP

Einklappen

Neue Werbung 2019

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

  • #16
    Danke für die lange Antwort und für die vorwegnahme meiner potentiellen Fragen. Ich hatte das schon so in etwa verstanden. Nur habe ich nicht verstanden warum deine neue Version im Vergleich zu deiner alten Version mit der selben Schrittweiten- + Epsilon-Einstellung zu einem anderen Ergebnis kommt. Also wenn es doch die gleiche Formel ist, die dahinter steckt, wie kann das Ergebnis dann anders sein?

    Die get_factor-Funktionen liefern nicht immer die selben Werte. Nur mit den im 1. Beitrag genannten Werten (alle zusammen) kommen dann diese beiden < 1 Zahlen raus.

    PS: Es gibt kein "Ihr".
    PPS: Mir fallen die Augen zu. Gute Nacht wünsche ich dir.
    Bis vor Kurzem hatte ich einen roten Bewertungspunkt. Leider kann ich nicht so ganz nachvollziehen warum das so war. Der Auslöser war diese harmlose Antwort, welches mit Kommentaren wie "was ein bullshit" bewertet wurde.

    Kommentar


    • #17
      Kurz die Rückfrage: Kann das einfach an dieser Zeile liegen (vgl. Beitrag #8)?

      PHP-Code:
      $i 556 $g// ??? $i haben wir schon 
      Also, es war ja der Sinn der Sache, $i anzunähern. Deshalb hat es mich gewundert, dann nachher noch $i einfach über die festgelegten (hartkodierten, die get_factor-Funktionen liefern immer dasselbe) Werte für $l und $k noch mal zu berechnen. So war das aber glaube ich in den von dir gelieferten Termen drin, weshalb ich das übernommen hatte.

      Kommentar


      • #18
        Ja, liegt daran.

        Der Code in #8 approximiert $i als float(4.2329999999997). Danach wird $i in der im letzten Post erwähnten Zeile noch mal überschrieben.

        Der Code in #12 approximiert $i als float(4.2330000000001).

        Die Algorithmen in #8 und #12 liefern also das gleiche Resultat. Der Unterschied an der letzten Nachkommastelle liegt sicherlich daran, dass Floats Zahlenwerte nicht immer exakt ausdrücken können und dass in #8 und #12 wohl irgendwelche Teilberechnungen in unterschiedlicher Reihenfolge vorgenommen werden.

        Kommentar


        • #19
          Hallo mermshaus,

          ich hoffe du hast / hattest einen schönen sonnigen Tag gehabt.

          Zitat von mermshaus Beitrag anzeigen
          Kurz die Rückfrage: Kann das einfach an dieser Zeile liegen (vgl. Beitrag #8)?

          PHP-Code:
          $i 556 $g// ??? $i haben wir schon 
          Also, es war ja der Sinn der Sache, $i anzunähern. Deshalb hat es mich gewundert, dann nachher noch $i einfach über die festgelegten (hartkodierten, die get_factor-Funktionen liefern immer dasselbe) Werte für $l und $k noch mal zu berechnen. So war das aber glaube ich in den von dir gelieferten Termen drin, weshalb ich das übernommen hatte.
          Das $i hier (also der Wert des Quotienten) dient eigentlich nur zum Debug.

          Zitat von mermshaus Beitrag anzeigen
          Ja, liegt daran.

          Der Code in #8 approximiert $i als float(4.2329999999997). Danach wird $i in der im letzten Post erwähnten Zeile noch mal überschrieben.
          Der Code in #8 liefert bei mir $i als float(4.2121212121212). Also genau das, was Excel auch liefert.

          Zitat von mermshaus Beitrag anzeigen
          Der Code in #12 approximiert $i als float(4.2330000000001).
          Der Code in #12 liefert bei mir $i als float(4.2329999999997).

          PHP-Code:
          $h 71.1;

          $tmp findIntersection(
              function (
          $x) { return $x; },
              function (
          $x) use ($h) {
                  return (
          556 / ($h / (545.223880597015 1000 0.9942 0.998670248976177))); 
              },
              
          0100.0010.001
          ); 
          Zitat von mermshaus Beitrag anzeigen
          Die Algorithmen in #8 und #12 liefern also das gleiche Resultat. Der Unterschied an der letzten Nachkommastelle liegt sicherlich daran, dass Floats Zahlenwerte nicht immer exakt ausdrücken können und dass in #8 und #12 wohl irgendwelche Teilberechnungen in unterschiedlicher Reihenfolge vorgenommen werden.
          Wie du oben siehst, stimmt das leider nicht. Es ist mehr wie nur die letzte Nachkommastelle, die bei Code #2 nicht stimmt.

          Danke.
          Bis vor Kurzem hatte ich einen roten Bewertungspunkt. Leider kann ich nicht so ganz nachvollziehen warum das so war. Der Auslöser war diese harmlose Antwort, welches mit Kommentaren wie "was ein bullshit" bewertet wurde.

          Kommentar


          • #20
            Ich kann es auch noch mal rein logisch darstellen: Der Algorithmus in #8 kann überhaupt nicht auf float(4.2121212121212) kommen, weil die Schrittweite bei 0.001 liegt. $i kann nur drei relevante Nachkommastellen haben. 0.001, 0.002, 0.003, …

            Kopier den Code aus #8 in eine Datei, entfern die Zeile

            PHP-Code:
            $i 556 $g// ??? $i haben wir schon 
            und schau, was du für $i erhältst. Den gleichen Wert wie in #12.

            Kommentar


            • #21
              Geschrieben, getan:

              $i von Code aus #8 mit genannter, entfernter Zeile: float(4.2309999999739)
              $i von Code aus #12: float(4.2329999999997)
              Bis vor Kurzem hatte ich einen roten Bewertungspunkt. Leider kann ich nicht so ganz nachvollziehen warum das so war. Der Auslöser war diese harmlose Antwort, welches mit Kommentaren wie "was ein bullshit" bewertet wurde.

              Kommentar


              • #22
                Das kann eigentlich nicht sein, denn dein float(4.2309999999739) liegt mehr als 0.001 ($epsilon) von float(4.2332696340515) entfernt, was durchgehend der Wert von $tmp ist.

                PHP-Code:
                $k get_factor_k($i); // 0.9942
                $l get_factor_l($i); // 0.998670248976177
                $tmp = (556 / ($h / (545.223880597015 1000 $k $l))); // $h = 71.1 
                - http://3v4l.org/3il92

                Code:
                a = int(1110)
                b = int(370)
                c = float(6171.6)
                d = float(5629.476)
                e = float(42.879299999997)
                f = float(46.986299999997)
                g = float(132)
                h = float(71.1)
                i = float(4.2329999999997)
                j = float(542.124)
                k = float(0.9942)
                l = float(0.99867024897618)

                Kommentar


                • #23
                  Okay, der andere Wert kommt wegen den Berechnungen der beiden Faktor-Funktionen.

                  Also ist doch alles IO.

                  Ich danke dir vielmals!
                  Bis vor Kurzem hatte ich einen roten Bewertungspunkt. Leider kann ich nicht so ganz nachvollziehen warum das so war. Der Auslöser war diese harmlose Antwort, welches mit Kommentaren wie "was ein bullshit" bewertet wurde.

                  Kommentar

                  Lädt...
                  X