Griever: Tausendertrennzeichen einfügen

Hallo.

Nun. Ich programmiere ja nich nur VB oder PHP. Auch Javascript ist mein Bereich. Doch jetzt häng ich fest.

Es scheint ne einfache Sache zu sein. Aber ich komm nicht drauf. Daher erbitte ich nochmals ne Hilfe.

Hier mein Problem.

Habe zahl:
           23455 oder 1000000

Möchte Zahl:
           23.455 oder 1.000.000

Ich hoffe, dass das das Problem außreichend schildert. Habs mit 'ner While-Schleife probiert, aber die Schleife findet kein Ende.

  1. Hellihello

    Javascript ist doch typendurchlässig oder wie das heißt. Soll heißen, dass eine Zahl als String behandelt (u.o. verwandelt) werden kann. Dann gibt es eine Funktion, mit der Du Postitionen im String anfahren kannst. Und da dann den Punkt hin.

    frankx

    1. Ich selbst habe keine Zeit, jetzt selfHTML durchzuforsten.

      Wenn es so eine funktion wirklich gibt, dann frag ich mich, wo sie stehen soll. Habe mich mit selfHTML früher mal genau befasst (früher = 1 Jahr her).

      Doch eine Funktion zu so einer Bestimmung habe ich noch nicht erkannt. So gut wie Alle String-Funktionen fangen von links an zu zählen. Doch ich bräuchte etwas, welches von rechts an, immer nach jeder 3ten Stelle ein . setzt.

      MFG
      Griever

      1. Hi Griever,

        <HTML>
        <BODY>
        <SCRIPT>
        function mach_tausender(zahl) {
           var i;
           var j=0;
           var ergebnis="";

        i=zahl.length;
           while (i >= 0) {
              ergebnis=zahl.substr(i,1)+ergebnis;
              j++;
              if (j==4) {
                 ergebnis="."+ergebnis;
                 j=0;
              }
              i--;
           }
           return ergebnis;
        }
        alert("10000="+mach_tausender("10000"));
        </SCRIPT>
        </BODY>
        </HTML>

        Gruß

        Hans

        Ich selbst habe keine Zeit, jetzt selfHTML durchzuforsten.

        Wenn es so eine funktion wirklich gibt, dann frag ich mich, wo sie stehen soll. Habe mich mit selfHTML früher mal genau befasst (früher = 1 Jahr her).

        Doch eine Funktion zu so einer Bestimmung habe ich noch nicht erkannt. So gut wie Alle String-Funktionen fangen von links an zu zählen. Doch ich bräuchte etwas, welches von rechts an, immer nach jeder 3ten Stelle ein . setzt.

        MFG
        Griever

        1. Hellihello Hans,

          hast Du heute Deine Spendierhosen an? Klappt bis 100.000, dannach .1000.000 .

          frankx

          1. Hellihello Hans,

            hast Du heute Deine Spendierhosen an? Klappt bis 100.000, dannach .1000.000 .

            frankx

            Hallo frankx !

            Hier die korrigierte Funktion. Problem war, daß length zwar die Laenge angibt, substring abervon 0 bins length-1 geht.

            function mach_tausender(zahl) {
               var i;
               var j=0;
               var ergebnis="";

            i=zahl.length-1;
               alert("i="+i);
               while (i >= 0) {
                  ergebnis=zahl.substr(i,1)+ergebnis;
                  j++;
                  if (j==3) {
                     ergebnis="."+ergebnis;
                     j=0;
                  }
                  i--;
               }
               return ergebnis;
            }

            Gruß

            Hans

            1. Hellihello

              jap, oder aber j bei minus 1 starten. Aber der Alternative gäbs ja noch einige...

              Gruß,

              frankx

              1. Ja. Danke. Sowas hab ich gesucht. Vielen dank.

                MFG
                Griever

  2. Nun. Ich programmiere ja nich nur VB oder PHP. Auch Javascript ist mein Bereich. Doch jetzt häng ich fest.

    Naja, programmieren würd ich das nicht nennen, wie du schon sagtest ist es eher probieren.

    Ich hoffe, dass das das Problem außreichend schildert. Habs mit 'ner While-Schleife probiert, aber die Schleife findet kein Ende.

    Das ist ein Standardproblem für das du mit ein bisschen suchen auch schnell eine Lösung mit google gefunden hättest.

    Vielleicht probierst du's mal so:

    <script type="text/javascript">  
    do  
    {  
    var zahl = parseInt(Math.random() * 1e9);  
    }while(confirm( zahl + '=' + format(zahl)))  
      
    function format(zahl, TZ)  
    {  
        if(!TZ) TZ = '.';  
        var new_string = [];  
        var tmp = parseInt(zahl) + '';  
        while( tmp.length > 3)  
        {  
            new_string[new_string.length] = tmp.substr(tmp.length - 3 ) ;  
            tmp = tmp.substr(0, tmp.length -3 )  
        }  
        if(tmp)  new_string[new_string.length] = tmp;  
        return new_string.reverse().join(TZ);  
    }  
    </script>
    

    Struppi.

  3. Hallo Griever,

    du weißt, dass in vielen Ländern und Sprachen der "." das Dezimaltrennzeichen ist, und das "," als Tausendertrennzeichen benutzt wird? Du weißt auch, dass auch in per Javascript ausgewerteten Eingaben der "." das Dezimaltrennzeichen ist und Zahlen mit "," nur noch Strings sind?

    Gruß, Jürgen

    1. gudn tach!

      du weißt, dass in vielen Ländern und Sprachen der "." das Dezimaltrennzeichen ist, und das "," als Tausendertrennzeichen benutzt wird?

      da es gerade dazu passt, empfehle ich die wikipedia-artikel ueber zifferngruppierung und allgemein schreibweise von zahlen.

      selbst in deutschland, wo sehr oft der punkt als zifferngruppierungszeichen verwendet wird, gilt jener nach din, iso und duden explizit als falsch und es sollte stattdessen ein (schmales) leerzeichen verwendet werden.
      als dezimaltrennzeichen soll uebrigens auch nach iso das komma verwendet werden.

      bei grossen zahlen halte ich die sog. wissenschaftliche notation sowieso fuer praktischer. es scheint jedoch so zu sein, dass viele leute angst davor haben.

      prost
      seth

      1. Hallo seth.

        selbst in deutschland, wo sehr oft der punkt als zifferngruppierungszeichen verwendet wird, gilt jener nach din, iso und duden explizit als falsch und es sollte stattdessen ein (schmales) leerzeichen verwendet werden.

        Diese Regelung ist offenbar nur für Printmedien wirklich sinnvoll.

        Im flexiblen Web ist eine solche Notation fehl am Platze, da die Zahl am Leerzeichen umbrechen kann und damit in zwei Teile auf zwei Zeilen verteilt wird. (Daher wohl eher &nbsp; oder eben doch „.“)

        Einen schönen Dienstag noch.

        Gruß, Ashura

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        mathbr:del.icio.us/ mathbr:w00t/
        1. gudn tach Ashura!

          Im flexiblen Web ist eine solche Notation fehl am Platze, da die Zahl am Leerzeichen umbrechen kann und damit in zwei Teile auf zwei Zeilen verteilt wird.

          aeh, aber da gibt es doch...

          (Daher wohl eher &nbsp;

          eben. oder NNBSP.

          oder eben doch „.“)

          igitt, nein! ;-)

          prost
          seth

      2. Hallo.

        selbst in deutschland, wo sehr oft der punkt als zifferngruppierungszeichen verwendet wird, gilt jener nach din, iso und duden explizit als falsch und es sollte stattdessen ein (schmales) leerzeichen verwendet werden.

        Nach DIN 5008 gilt er nicht explizit als falsch und wird für Geldbeträge sogar empfohlen.
        Und Trennungen hinter dem Dezimaltrennzeichen sowie bei ohnehin nur viertelligen Beträgen sind typographisch zweifelhalft.
        MfG, at

        1. gudn tach at!

          selbst in deutschland, wo sehr oft der punkt als zifferngruppierungszeichen verwendet wird, gilt jener nach din, iso und duden explizit als falsch und es sollte stattdessen ein (schmales) leerzeichen verwendet werden.

          Nach DIN 5008 gilt er nicht explizit als falsch und wird für Geldbeträge sogar empfohlen.

          ueber din 1333 steht in der wikipedia:
          "DIN 1333 verbietet ausdrücklich die Verwendung des Punktes '.' zur Tausendertrennung."

          leider kann ich hier keine bessere quelle angeben, da es mir schwer zu sein scheint, via google gescheite infos darueber zu bekommen.

          Und Trennungen hinter dem Dezimaltrennzeichen sowie bei ohnehin nur viertelligen Beträgen sind typographisch zweifelhalft.

          ack, ausser in tabellen, in denen auch zahlen vorkommen, deren anzahl der ziffern groesser als 4 ist.

          prost
          seth

          1. Hallo.

            ueber din 1333 steht in der wikipedia:
            "DIN 1333 verbietet ausdrücklich die Verwendung des Punktes '.' zur Tausendertrennung."

            Unter der Voraussetzung, dass die Aussage stimmt, steht noch immer die Frage im Raum, unter welchen Bedingungen sie greift.

            leider kann ich hier keine bessere quelle angeben, da es mir schwer zu sein scheint, via google gescheite infos darueber zu bekommen.

            Die Norm selbst ist ja auch urheberrechtlich gegen solche Auszüge geschützt.

            Und Trennungen hinter dem Dezimaltrennzeichen sowie bei ohnehin nur viertelligen Beträgen sind typographisch zweifelhalft.

            ack, ausser in tabellen, in denen auch zahlen vorkommen, deren anzahl der ziffern groesser als 4 ist.

            Ja, auch das ist ja Bestandteil einer bei Wikipedia lebhaft geführten Diskussion zu diesem Thema gewesen.
            MfG, at

            1. gudn tach!

              Und Trennungen hinter dem Dezimaltrennzeichen sowie bei ohnehin nur viertelligen Beträgen sind typographisch zweifelhalft.

              ack, ausser in tabellen, in denen auch zahlen vorkommen, deren anzahl der ziffern groesser als 4 ist.

              Ja, auch das ist ja Bestandteil einer bei Wikipedia lebhaft geführten Diskussion zu diesem Thema gewesen.

              mehrerer diskussionen, ja. wobei jener teil bei weitem schneller akzeptiert (allerdings von einigen nicht verstanden) wurde, als das grundsaetzliche abweichen von duden, din und iso. ich habe da 2005 auch mitdiskutiert aber irgendwann die lust verloren. momentan werden (imho leider) in der deutschen wikipedia ziffern durch den punkt gruppiert.
              naja, es gibt wichtigeres... z.b. die frage nach dem richtigen lemma und sowas. ;-)

              prost
              seth