riesige Zahlen ausschreiben ?

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

  • riesige Zahlen ausschreiben ?

    Hallo,

    wenn ich mit PHP diverse Berechnungen durchführe, bekomme ich zum Teil sehr große Ergebnisse. Will ich diese mit einem einfachen echo ausgeben, bekomme ich Anzeigen folgender Art :

    9.22337203685E+018

    Nun müsste ich aber die komplette Zahl angezeigt bekommen, also so :

    9223372036854775808

    Wie lässt sich das realisieren ? Irgendwie steh ich scheinbar auf'm Schlauch atm oder seh mal wieder den Wald vor lauter Bäumen nicht...

  • #2
    Re: riesige Zahlen ausschreiben ?

    Mathematische Funktionen mit beliebiger Genauigkeit
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hey, super Vielen Dank, dass ist genau das, was ich gesucht habe, klappt damit prima

      PHP-Code:
      $x 1;
      $y 1;
      $summe1 = array();
      echo 
      "Reiskörner auf dem ".$y."ten Feld : ".$x."<br>";
      $y 2;
      for (
      $a 1$a <= 63$a++)
        {
        
      $x bcmul($x'2');
        echo 
      "Reiskörner auf dem ".$y."ten Feld : ".$x."<br>";
        
      $y++;
        
      array_push($summe1$x);
        }
      $summe2 count($summe1);
      $c $summe1[0];
      for (
      $b 1$b <= $summe2$b++)
        {
        
      $c bcadd($c$summe1[$b]);
        }
      $c bcadd($c'1');
      echo 
      "<br><br>Insgesamt befinden sich ".$c." Reiskörner auf dem Schachbrett."
      Ihr kennt doch bestimmt diese Geschichte mit den Reiskörnern auf einem Schachbrett ... mit diesem kleinen script wollte ich einfach nur die Körner jedes einzelnen Feldes berechnen und zum Schluss die Gesamtmenge

      Daher auch nochmal eine Frage : Ginge es auch einfacher ?
      Zuletzt geändert von Tommy75; 02.01.2007, 23:41.

      Kommentar


      • #4
        Hab bereits eine einfachere Version gefunden :

        PHP-Code:
        $x 1;
        $y 1;
        echo 
        "Reiskörner auf dem ".$y."ten Feld : ".$x."<br>";
        $y 2;
        for (
        $a 1$a <= 63$a++)
          {
          
        $x bcmul($x'2');
          echo 
        "Reiskörner auf dem ".$y."ten Feld : ".$x."<br>";
          
        $y++;
          }
        $c bcsub(bcmul($x'2'), '1');
        echo 
        "<br><br>Insgesamt befinden sich ".$c." Reiskörner auf dem Schachbrett."
        (Letzte Zahl * Zwei) - Eins = Summe aller Zahlen

        Wusst ich nicht bis eben gerade Und einfacher dürfte es kaum gehn, oder doch ?

        Kommentar


        • #5
          meine version:
          PHP-Code:
          for($i=0$i<65$i++)
           echo 
          'Feld: '.$i.' Reiskörner: '.bcpow(2$i-1).'<br />'

          Kommentar


          • #6
            achso, die summe wolltest du auch noch.
            kannst du ja am ende einfach so ausgeben:
            PHP-Code:
            echo 'Reiskörner gesamt: '.bcsub(bcpow(264), 1); 

            Kommentar


            • #7
              so, hier nochmal komplett und sauberer, die bcmath-funktionen verlangen ja strings.
              PHP-Code:
              $fields=64// dynamische Komponente - für andersartige Schachbretter ;)
              for($i=0$i<$fields$i++)
               echo 
              'Feld: '.($i+1).' Reiskörner: '.bcpow('2'"$i").'<br />';
              echo 
              'Reiskörner gesamt: '.bcsub(bcpow('2'"$fields"), '1'); 
              Zuletzt geändert von 3DMax; 03.01.2007, 00:53.

              Kommentar


              • #8
                Original geschrieben von 3DMax
                so, hier nochmal komplett und sauberer, die bcmath-funktionen verlangen ja strings.
                PHP-Code:
                $fields=64// dynamische Komponente - für andersartige Schachbretter ;)
                for($i=0$i<$fields$i++)
                 echo 
                'Feld: '.($i+1).' Reiskörner: '.bcpow('2'"$i").'<br />';
                echo 
                'Reiskörner gesamt: '.bcsub(bcpow('2'"$fields"), '1'); 
                hmm, jeden durchlauf aufs neue eine potenzierung durchzuführen anstatt wie Tommy75 die zwischenergebnisse via multiplikation weiterzuverwenden ist nicht gerade performant...

                Kommentar


                • #9
                  Original geschrieben von PHP-Desaster
                  hmm, jeden durchlauf aufs neue eine potenzierung durchzuführen anstatt wie Tommy75 die zwischenergebnisse via multiplikation weiterzuverwenden ist nicht gerade performant...
                  macht den kohl aber auch nicht gerade fett.
                  Laufzeit 1: 0.000308036804199
                  Laufzeit 2: 0.000403165817261

                  PHP-Code:
                  ob_start();
                  $timer=microtime(true);

                  $x 1;
                  $y 1;
                  echo 
                  "Reiskörner auf dem ".$y."ten Feld : ".$x."<br>";
                  $y 2;
                  for (
                  $a 1$a <= 63$a++)
                    {
                    
                  $x bcmul($x'2');
                    echo 
                  "Reiskörner auf dem ".$y."ten Feld : ".$x."<br>";
                    
                  $y++;
                    }
                  $c bcsub(bcmul($x'2'), '1');
                  echo 
                  "<br><br>Insgesamt befinden sich ".$c." Reiskörner auf dem Schachbrett.";

                  echo 
                  '<br />Laufzeit 1: '.(microtime(true)-$timer).'<br /><hr />';

                  $timer=microtime(true);

                  $fields=64;
                  for(
                  $i=0$i<$fields$i++)
                   echo 
                  'Feld: '.($i+1).' Reiskörner: '.bcpow('2'"$i").'<br />';
                  echo 
                  'Reiskörner gesamt: '.bcsub(bcpow('2'"$fields"), '1');

                  echo 
                  '<br /><hr />Laufzeit 2: '.(microtime(true)-$timer).'<br />'

                  Kommentar

                  Lädt...
                  X