Variable als String an Funktion übergeben?

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

  • Variable als String an Funktion übergeben?

    Hallo ! Ich habe folgendes Problem: Ich möchte Aus Zahlen wie 1234567 Zahlen wie 1.234.567 machen. Dies klappt auch ganz gut, solange die Zahlen nicht zu viele Stellen haben. Dann wird an die Funktion nämlich nicht die Zahl, sondern etwas ala 1E37 übergeben, womit mein script natürlich nicht funktioniert... Wie schaffe ich es, dass die Variable an die Funktion so übergeben wird, wie sie eingegeben wird ?

    Sprich: 11111111111111111111111111111111111111111 soll so bleiben und nicht 11+E37 oder sowas werden.

    Danke

  • #2
    Re: Variable als String an Funktion übergeben?

    woher kommt denn deine variable?

    per GET oder POST übergebene werte sind erstmal defaultmäßig strings.

    wenn du den wert selbst irgendwo notierst, solltest du es mal mit der string-notation anstatt der für zahlen versuchen.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      habe mich vielleicht undeutlich ausgedrückt:

      also oben wird die funktion deklariert... und unten steht dann beispielweise

      echo tpunk(12345)

      tpunkt(12345) sollte 12.345 ergeben.

      wenn ich aber tpunkt(11111111111111111111111111111111111111111111111) mache kommt nicht 11.111.111........

      sondern : 1.1111111111111E+064.067.070.073.076.079.082

      übergeben is also net das richtige wort ;O


      EDIT:

      hmm wie mach ich das? (string-notation statt zahlennotation)

      PHP-Code:
      function tpunkt($zahl)
      {

      $store=$zahl;
      $steps=(strlen($zahl)-(strlen($zahl)%3))/3;
      $result="";
      while(
      $k<$steps)
      {
      $k+=1;
      $gruppe=substr($store,-3,3);
      $result=".".$gruppe.$result;
      $store=($store-$gruppe)/1000;
      }
      $result=$store.$result;
      return 
      $result;
      }

      echo 
      tpunkt(111111111111111111111111111111111111111111111111111111111111111111111111111111111111); 
      Zuletzt geändert von TzTz; 15.10.2004, 16:09.

      Kommentar


      • #4
        PHP-Code:
        <?php

        function tpunkt($zahl)
        {
            
        $newstring $zahl;
            
        $j=0;
            
        $k=0;
            for(
        $i 1$i <= intval((strlen($zahl)-1)/3); $i++)
            {
                
        $k = ($i 3) + $j;
                
        $partone substr($newstring0strlen($newstring) - $k);
                
        $parttwo substr($newstringstrlen($newstring) - $k$k);
                
        $newstring $partone.'.'.$parttwo;
                
        $j++;
            }
            return 
        $newstring;
        }

        echo 
        tpunkt($_GET['zahl']);

        ?>
        Aufrufbar mit script.php?zahl=3209478357934675673465786384658763


        Gruß,
        Chris

        Kommentar


        • #5
          Original geschrieben von TzTz
          hmm wie mach ich das? (string-notation statt zahlennotation)
          grundlagen ...
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            hmm,

            wenn du zahlen beliebiger genauigkeit/stellenanzahl in php verwenden willst, schau dir die bc-funktionen an, bcadd mal als beispiel genant ...
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              Original geschrieben von wahsaga
              grundlagen ...
              Das hilft mir jetzt ungemein viel weiter

              Das andere Script macht im Prinzip das gleiche wie meins. Das Problem ist, dass die Zahl nicht als Exponentialzahl angegeben wird. Ich kanns nicht übern get machen, da etwa 20 werte auf die weise dargestellt werden sollen, also müsst ich einfach nur wissen, wie verhindern kann, dass die 1111111111111111111111111111111111 zu 1.1111111111111E+058 wird.

              das mit dem bcadd und so klappt nicht, da die auch nur zahlen bis 9 stellen ca. annehmen. Danach wird der wert einfach 0.000000000000000000000...

              das muss doch irgendwie möglich sein

              Kommentar


              • #8
                Meine Funktion ist doch bereits für Strings gemacht. Musst lediglich die Dinger als String übergeben (in Hochkommas setzen)...

                Was genau ist hier eigentlich das Problem? Vielleicht verstehen wir ja mehr, wenn du uns erklärst, was genau du vor hast / woher die Daten kommen etc.pp... alles relevante eben...

                GN8,
                Christian

                Kommentar


                • #9
                  oh mann ^^ okay dann hat dein script mein problem gelöst ... ich hatte mit meinem mal das mit den hochkommas versucht, was nix gebracht hat (da ich ja mit dem /1000 wieder zu ner int gemacht hab wohl). Tut mir leid, aber mit den hochkommas klappts jetzt danke schön.

                  Ich bin nur nicht drauf gekommen, wie ich den punkt dabei mit berücksichtige. Und darauf, strlen - 1 zu nehmen als bedingung ... naja fehlt mir wohl die erfahrung...

                  Ziel davon ist es wenn ich z.B. 3 werte hab, die während des scripts berechnet werden, dass diese dann in dieser Schreibweise dargestellt werden, um bei großen Zahlen nicht die Übersicht zu verlieren...

                  Also war das Problem bei meinem Script, dass es nicht ein reines String blieb oder?

                  Kommentar


                  • #10
                    Naja du hast viele mathematische Operationen benutzt zur Setzung der Punkte. Bei mir wird eben ausschließlich mit der Länge gearbeitet.

                    Was jetzt noch wichtig wäre, wäre das Teil für negative Zahlen (Strings) kompatibel zu machen... ist aber nen Klacks das umzusetzen .

                    Gruß,
                    Christian

                    Kommentar


                    • #11
                      geht das nicht jetzt schon? man kann ja auch blablablablabla eingeben und der setzt die punkte richtig. unabhängig von der länge, da is das - doch nur ein weiteres zeichen oder?

                      Kommentar

                      Lädt...
                      X