nächste kleinere zahl...

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

  • nächste kleinere zahl...

    Hey Leute,
    mein Problem ist, ich habe eine Liste x² ,
    bsp :
    0,
    2,
    4,
    8,
    16 etc


    nun brauch ich zum Beispiel die nächst kleinere Zahl aus der liste von 24.
    Das wäre 16. hat jmd ne idee wie ich die Abfrage am besten bewerkstellige =?

    mfg
    Zuletzt geändert von gfx-freak; 01.07.2003, 07:40.
    $adVanCEd

  • #2
    Re: nächste kleinere zahl...

    Original geschrieben von gfx-freak
    Hey Leute,
    mein Problem ist, ich habe eine Liste x² ,
    bsp :
    0,
    2,
    4,
    8,
    16 etc
    die 2 in der liste ist dann aber eine 1.
    nun brauch ich zum Beispiel die nächst kleinere Zahl aus der liste von 24.
    Das wäre 16. hat jmd ne idee wie ich die Abfrage am besten bewerkstellige =?
    nimm die wurzel aus deiner zahl, schneide die nachkommastellen ab (floor()), und potenziere die zahl wieder mit 2.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      muss das ne Liste sein? sonst:
      $y = pow(floor(sqrt($x)), 2);
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        oder die liste in ein temporäres array packen und sortieren, zahl suchen und nächste ausgeben

        Kommentar


        • #5
          Hey super !
          Vielen Dank für eure Lösungsansätze,

          @ Titus ich brauche nicht den logarythmus
          x² sondern 2 hoch x

          BsP: 2 hoch 13 = 8200, nach unserer Liste ( erster post ) wäre die nächst kleinste potenzierte zahl 8192 . zu dieser muss ich kommen, über

          $x = 8200;
          $y = pow(floor(sqrt($x)), 2);

          echo $y;

          bekomme ich 8100 und ist definitiv falsch.
          Ne idee ?
          Zuletzt geändert von gfx-freak; 01.07.2003, 10:11.
          $adVanCEd

          Kommentar


          • #6
            Original geschrieben von gfx-freak
            @ Titus ich brauche nicht den logarythmus
            x² sondern 2 hoch x
            warum stellst du dann die frage falsch?

            (oben stand x²)


            ausserdem brauchst du genau in dem fall den logarithmus, spezieller den logarithmus naturalis, ln(zahl)


            2 hoch floor( (ln(zahl)/ln(2)))


            bei deinem beispiel:

            ln(8200) / ln(2) = 13,001408194392808388906610166502

            floor davon ist 13.

            2^13 ergibt ... 8192
            Zuletzt geändert von wahsaga; 01.07.2003, 11:49.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              @wahsaga
              Du scheinst genau der richtige für ein Problem von mir zu sien. Und zwar versuche ich heraus zu bekommen wie die genaue Formel für den LOG eines Taschenrechners ist. Ich benötige den nämlich um Dichte-Werte zu berechnen, allerdings ist die Math.log() Funktion von JavaScript ungeeignet da ich völlig verkehrte Werte erhalte. Kannst Du mir da vieleicht helfen?

              Kommentar


              • #8
                log ist ja auch zur Basis 10, und nicht ln (Basis 2)
                schau doch mal in deine Formelsammlung, wie du mit log den ln darstellen kannst
                TBT

                Die zwei wichtigsten Regeln für eine berufliche Karriere:
                1. Verrate niemals alles was du weißt!


                PHP 2 AllPatrizier II Browsergame

                Kommentar


                • #9
                  Es gibt da ne einfache Formel:

                  logb(x) = log(x) / log(b)

                  also Logarithmus von x zur Basis b ist gleich
                  Logarithmus von x zu beliebiger Basis geteilt durch Logarithmus von b zur gleichen Basis.

                  In JavaScript bekommst du mit dieser Formel alle möglichen Logarithmen:
                  den natürlichen direkt (Funktion log); die anderen indem du durch LN2 (natürlicher Log. von 2), LN10 (natürlicher Logarithmus von 10) oder einen beliebigen anderen Logarithmus dividierst.

                  In PHP hast du den natürlichen und den dezimalen Logarithmus und kriegst den Rest über Division. Aber Vorsicht vor Rundungsfehlern!


                  Und noch am Rande: der natürliche Logarihmius ln ist zur Basis e, nicht zur Basis 2.
                  mein Sport: mein Frühstück: meine Arbeit:

                  Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                  Kommentar


                  • #10
                    Das war eine zauberhafte Antwort. Danke Dir. Hast mir damit echt weitergeholfen.

                    Kommentar


                    • #11
                      Wir rechnen zwar alle gerne mit dem Logarithmus, aber wie wäre:
                      PHP-Code:
                      <?php
                        
                      for ($zahl 17,$i=0;$zahl >= 2;$zahl /= 2,$i++);
                        
                      $zahl2 pow(2$i);
                        echo 
                      $zahl2;
                      ?>
                      Offe

                      Kommentar

                      Lädt...
                      X