Kai Weimer: Einer 4-stelligen Zahl vorangestellte 0len werden gestrichen

Guten Tag!

Ich weiß hier nicht weiter:
Wenn ich einer Funktion eine vierstellige Zahl übergebe und dieser 0len vorangestellt sind, streicht JavaScript diese:
function funktion(zahl) {
window.alert(zahl);
}

Nehmen wir mal an, zahl wäre 0005, dann gibt funktion(0005) "5" zurück.

Kai Weimer

  1. Heiner

    Du kannst der Variable einen Typ zuweisen, nehme String.

    Du kannst der die Länge des Strings auslesen und nacheinander eine Null voranstellen, bis die Länge des Strings bei vier angekommen ist.

    Heiner

  2. Moin,

    Wenn ich einer Funktion eine vierstellige Zahl übergebe und dieser 0len vorangestellt sind, streicht JavaScript diese:

    Richtig, da die Nullen nunmal nichts zum Wert der Zahl beitragen. Wenn du die Nullen behalten willst, darfst du keine Zahl übergeben, sondern musst einen String nehmen: funktion("0005");

    --
    Henryk Plötz
    Grüße aus Berlin
    ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
    ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
  3. Servus,

    Ich weiss ja nicht was Du damit bezwecken willst. Wenn es sich nur um eine Schönheitsfeature handelt kannst Du es wie schon beschrieben
    in einen String verwandeln und dort weitere 0en anfügen oder voranstellen.

    Versuche deise jedoch zu veremeiden, wenn Du die Zahlen weitr verwendest, da Du hinterher de Zahlen jedes mal wieder ein ein Zahlenvormat verwandeln musst.
    Typische Fälle hierfür.... Rechen operationen nacher auf die Zahlen und oder verwendung der Zahlen als id innerhalb einer Datenbank.

    Gruss Matze

    1. Hallo,

      Es gibt genügend Anwendungen, in den man Nullen voranstellen muss.

      Wenn man etwa das neue Datumsformat unterstützen möchte und den Monat irgendwie berechnet, dann kann es nötig sein, eine Null voranzustellen. Zum Beispiel wäre das heutige Datum im DIN-5008-Datumsformat 2003-07-26, nicht etwa 2003-7-26.

      Heiner

      1. Naja nimms mir nicht übel,

        aber da ist es auch nicht zwingend notwendig, da du vorher ein - und danach ein -

        hast. Un ich meine mich daran zu erinnern, dass ein PC durchaus den Unterschied zwischen Beispielsweise 17 und 7 zu kennen.

        Aber egal Datum hat mit einem Zahlenformat nicht viel zu tun. Auch wenn da eventuell Zahlen drin stehen und bei deiner darstellung müsstest Du ebenfalls entweder Character oder datum als Datentyp angeben und ncht zahl denn dann käme das raus:

        20030726 Ob das leserlich ist....
        Ausserdm kann man jedem Datumstyp den Monat und Tag und Jahr per weiterer Methode entlocken und Du brauchst hierfür keine eigene Funktion schreieben welche die 0 vorher weg nimmt oder rann nimmt.

        Wie ich schon sagte, wenn es sich nicht um Schönheitsfeatures geht, solltest Du auf solche 07 08 oder sowas eigentlich verzichten weil es einfacher ist.

        Und üf die Datumsanzeige racuhst Du das nicht tun, denn es gibt einen Typ Datum den man eigentlich dafür verwenden sollte. genause wie man Zahlen wenn dieser weiter verwendet weren in einem Number und nicht Charachter gehalten werden sollten.

        Gruss Matze

        1. 20030726 Ob das leserlich ist....

          Daher ja "2003-07-26" als Zeichenkette.

          1. Richtig Richtig....

            Daher ja "2003-07-26" als Zeichenkette.

            Aber das geht auch mit dem Typ Datum ohne sich gedanken über 0el voranstellen gedanken zu machen.

      2. Hi,

        die oktale Angabe 0005 entspricht aber nunmal dem Wert 5. Es ist halt eine Zahl und keine Zeichenkette.

        Wenn man etwa das neue Datumsformat unterstützen möchte und den Monat irgendwie berechnet, dann kann es nötig sein, eine Null voranzustellen. Zum Beispiel wäre das heutige Datum im DIN-5008-Datumsformat 2003-07-26, nicht etwa 2003-7-26.

        Entweder Du schreibst dir eine Funktion, welche das entspr. zusammensetzt oder Du schaust mal bei http://www.plectranthus.de/ vorbei (Format("%1s-%02:2s-%03:2s", 2003, 7, 26);). Da gibt es so was ähnliches für die Formatierung von Zeichenketten. Sieht vielleicht etwas komisch aus aber es funktioniert;)

        jan

  4. Moin!

    Wir müssen hier zwei Fälle unterscheiden:

    Du willst mit der Zahl rechnen:

    0017+10=27

    Nimm es hin und stelle danach Deine Zahl wieder mit den führenden Nullen her:

    function Xstellig (zahl,stellen)
       hilfsvariable = 1;
       for (i=0; i < stellen; i++) {
         hilfsvariable = hilfsvariable * 10;
         /* hilfsvariable wird: 10, 100, 1000 */
         if (zahl < hilfsvariable) {
           zahl = "0" + zahl;
         }
       }
    return zahl;
    /* gibt einen String zurück */
    }

    Wenn Du versucht die Zahl als String zu behandeln ergibt:
    "0017"+"10"="001710"

    Das erscheint den meisten noch verwirrender...

    Gelegentlich kommt es zu genau dem gegenteiligen Problem:
    X = "100";
    X = X + 100;
    -> X = 100100 (statt 200)

    Hier hilft es den String umzuwandeln:

    X = "100";
    X = X * 1.0;
    X = X + 100;
    -> X=200

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Meinereinerselbst ist auf der Suche nach Aufträgen
    1. Moin!

      function Xstellig (zahl,stellen)
         hilfsvariable = 1;

      for (i=1; i < stellen; i++) {

      hilfsvariable = hilfsvariable * 10;
           /* hilfsvariable wird: 10, 100, 1000,... */
           if (zahl < hilfsvariable) {
             zahl = "0" + zahl;
           }
         }
      return zahl;
      /* gibt einen String zurück */
      }

      Da war eine Änderung nötig, sonst hätte es eine Stelle zuviel gegeben.

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Meinereinerselbst ist auf der Suche nach Aufträgen
    2. Hi,

      Du willst mit der Zahl rechnen:

      0017+10=27

      Korrektur : 0017 + 10 = 25

      jan

      1. Moin!

        0017+10=27

        Korrektur : 0017 + 10 = 25

        UAAAA!

        Da sieht mann die mannigfaltigen Nachteile, die es bringt, wenn Variablen nicht einem Typ zugeordnet werden. Das Teil rechnet einfach Oktal? Tatsächlich... aber nur unter bestimmten Bedingungen.

        Zur Anschauung:

        http://www.fastix.dyndns.org/tests/oktal.php

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Meinereinerselbst ist auf der Suche nach Aufträgen
        1. Moin!

          http://www.fastix.dyndns.org/tests/oktal.php

          Ich wollte doch immer die Vorschau benutzen :(

          --> http://fastix.dyndns.org/tests/oktal.php

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix®

          --
          Meinereinerselbst ist auf der Suche nach Aufträgen