Alexander: ausgabewert formatieren

hallo

ich erhalte als ausgabewert aus einer rechnung von verschiedenen zahlen eine unformatierte zahl z.b. 16064.999999999998

wie kann ich es erreichen, daß diese zahl nur noch zwei nachkommastellen hat, ein tausender-trennzeichen und das als währungsangabe dm dabeisteht z.b. 16.065,00

bitte helft mir

danke

alexander

  1. Hi
    Da must du schon ein wenig basteln. Eine Moeglichkeit ist es mit der Math Methode zu arbeiten.Damit kann man runden (Math.round(Zahl) ) und die naechstniedrigere ganze Zahl (Math.floor(Zahl) ausrechnen lassen.
    Das Ergebnis wird dann Stueck fuer Stueck "berechnet". siehe <../../tecg.htm>
    Hier mal ein Beispielcode:(Die Kommentare sollen es dir erleichtern zu verstehen was gerade gemacht wird)
    <html>
    <head>
    <title></title>
    <script language="JavaScript">
    <!--
    function schreibeAlsGeld() {
    hilfe1=Math.round(document.forms[0].erster.value*100); /* Da die ersten beiden Stellen interessant sind muss der Wert erst mal 100 genommen werden und dann wird gerundet */
    Geldbetrag=Math.floor(hilfe1/100000); /* Berechnung der Tausender*/
    Geldbetrag=Geldbetrag+"."
    Geldbetrag=Geldbetrag+(Math.floor(hilfe1/100)-1000*Math.floor(hilfe1/100000))  /* Berechnung der hunderter +Zehner +Einer*/
    Geldbetrag=Geldbetrag+","
    Geldbetrag=Geldbetrag+(hilfe1-100*Math.floor(hilfe1/100));  /* Berechnung des "Pfennigwertes" */
    Geldbetrag=Geldbetrag+"DM"
    alert(Geldbetrag)
    return
    }
    //-->
    </script>
    </head>
    <body>
    <form action="" method="" target="">
    <input type="Text" name="erster" value="12345.789" onchange="schreibeAlsGeld()" size="10" maxlength="">
    </form>
    </body>
    </html>
    Tschau Holger

    1. hallo holger

      danke für deinen vorschlag. ich bastle erst einmal.

      tschüß und schöne pfingsten

      alexander

      1. hallo

        ich habe mal ein bißchen gebastelt und festgestellt, daß man hier unterscheiden muß, welche zahl formatiert werden soll

        ich habe es hingekriegt (dank dem vorschlag von holger) das skript so anzupassen daß es für alle zahlen von 0 bis 999 funktioniert:

        function ZahlFormat () {

        var testWert = 500;

        Runden=Math.round(testWert*100); /* Da die ersten beiden Stellen interessant sind muss der Wert erst mal 100 genommen werden und dann wird gerundet */
          Geldbetrag=(Math.floor(Runden/100)-1000*Math.floor(Runden/100000))  /* Berechnung der hunderter +Zehner +Einer*/
          Geldbetrag=Geldbetrag+","
          Geldbetrag=Geldbetrag+(Runden-100*Math.floor(Runden/100));  /* Berechnung des "Pfennigwertes" */
          Geldbetrag=Geldbetrag+" DM"
          alert(Geldbetrag);
          return

        }  
        

        hier habe ich aber ein problem: bei einer ganzen zahl, habe ich als ich nur eine nachkommastelle (z.b. 500,0 DM). wie mache ich es das bei ganzen zahlen noch eine zweite null dazukommt.

        kann mir jemand helfen, wie es mit den anderen zahlen (über 999) aussieht?

        ich werde am wochenende weiter daran basteln.

        wenn ich ein ergebnis habe, daß dann für alle zahlen geht (nicht nur für einen bestimmten zahlenbereich) poste ich es.

        ich wünsche euch ein schönes wochenende

        alexander

        1. Hi
          Ich hab mir das ganze nochmal angeschaut und ein bischen herumprobiert. Ich hoffe, das Ergebnis stellt dich zufrieden ;-)
          <html>
          <head>
          <title>Zahlenformat</title>
          <script language="JavaScript">
          <!--
          function ZahlFormat () {

          var testWert = 100001.019;
            var Tausender="";
            var Hunderter="";
            var Pfennige="";
            Runden=Math.round(testWert*100); /* Da die ersten beiden Stellen interessant sind muss der
          Wert erst mal 100 genommen werden und dann wird gerundet */
            Tausender=Math.floor(Runden/100000)+".";/* Berechnung der Tausender */
            Hunderter=(Math.floor(Runden/100)-1000*Math.floor(Runden/100000))+","  /* Berechnung der hunderter +Zehner +Einer*/
            Pfennige=Runden-100*Math.floor(Runden/100)+"DM";  /* Berechnung des "Pfennigwertes"
          */
            if (Tausender=="0.") Tausender="";
            if (Tausender!="") {
            while (Hunderter.length<4) Hunderter="0"+Hunderter;
            }
            while (Pfennige.length<4) Pfennige="0"+Pfennige;
            Geldbetrag=Tausender+Hunderter+Pfennige;
            alert(Geldbetrag+"\n"+Tausender+"\n"+Hunderter+"\n"+Pfennige);
            return

          }
          //-->
          </script>
          </head>
          <body text="#000000" bgcolor="#FFFFFF" link="#BLAU" alink="#BLAU" vlink="#BLAU">
          <a href="javascript:ZahlFormat()">Testen</a>
          </body>
          </html>
          Tschau Holger