Gerch2003: Problem mit Ausgabe von Kommastellen

Hey ho,

folgende Sachlage.
Ich habe in einer Tabelle eine Kommazahl, sagen wir "3,5" stehen.

Mit dieser Kommazahl möchte ich dann Rechnen, was an sich ja theoretisch kein Problem darstellt.

Also das Problem was ich habe ist, dass es mir egal wie ich es versuche nicht die dritte Kommastelle angibt.

Also rechnerisch sieht es so aus "3,5 / 100" bzw. 3,5%. In der Ausgabe bekomme ich aber nur 0,03. Egal wie ich es anstelle ich bekomme keine 0,035 ausgegeben wie ich es aber brauche.

Weis da jemand weiter? Ich habe schon number_format, sprintf usw. ausprobiert.
Ich glaube irgendwas mache ich falsch?!

Gruß Gerch

  1. Servus,

    Versuch doch mal dieses hier

    $zahl = 5 / 100;
     $zahl=number_format($zahl, 3, ',', '.');
     echo $zahl;

    das müsste dir drei Nachkommastellen angeben.

    Gruß Jonny F.

    1. Servus,

      Versuch doch mal dieses hier

      $zahl = 5 / 100;
      $zahl=number_format($zahl, 3, ',', '.');
      echo $zahl;

      das müsste dir drei Nachkommastellen angeben.

      Anhang:

      In PHP wird einstatt ein Komma ein Punkt verwendet.

      sprich

      $zahl = 3.5 / 100;

      Nun sollte das Ergebnis stimmen.

      1. So ich habs :-)

        3.5 / 100 liefert wie gewünscht 0.035

        Der Fehler liegt da dran, dass ich den wert "3,5" in die Tabelle schreibe und Php mit dem Komma irgend ein Problem hat.

        Wenn ich also "3.5" in die Tabelle schreibe funktioniert alles wunderbar.

        Ich glaube allerdings dass meine User damit ein Problem damit haben könnten jeden Wert mit Punkt anstatt Komma einzutragen.
        Kann man dem irgendwie abhilfe schaffen?

        1. Hi!

          Der Fehler liegt da dran, dass ich den wert "3,5" in die Tabelle schreibe und Php mit dem Komma irgend ein Problem hat.
          Wenn ich also "3.5" in die Tabelle schreibe funktioniert alles wunderbar.

          Das liegt daran, dass ein Computer andere Vorstellungen davon hat, wie eine Zahl zu notieren ist, als es im Deutschen üblich ist.

          Ich glaube allerdings dass meine User damit ein Problem damit haben könnten jeden Wert mit Punkt anstatt Komma einzutragen.
          Kann man dem irgendwie abhilfe schaffen?

          Konvertiere die Werte zwischen den Systemen. Normalisiere Eingabewerte (bringe sie in eine computerverarbeitbare Form), bevor du sie weiterverarbeitest. Formatiere Werte, wenn du sie ausgibt in eine menschenlesbare Form.

          Lo!

    2. Jo, das funktioniert schonmal. Bzw. ich bekomme schonmal die dritte Kommastelle. Allerdings schreibt er mir eine 0 anstatt der 5 die eigentlich in der Tabelle steht.

      Gibt es dafür einen Grund?

      Hier mal grob mein Code:

        
      	$mysql_select		= "SELECT * FROM hauswelt_top_zins";  
      	$ressource_id_1	= mysql_query( $mysql_select );  
      	$output = mysql_fetch_array($ressource_id_1);  
        
        
      $zins_100 = $output['zins_100'] / 100;  
      	  
      	$zinssatz_100 = number_format($zins_100, 3, ',', '.');  
        
      
      
  2. Hallo,

    Also rechnerisch sieht es so aus "3,5 / 100" bzw. 3,5%. In der Ausgabe bekomme ich aber nur 0,03.

    eigenartig, denn mit

    echo 3, 5/100;

    bekomme ich die Ausgabe

    30.05

    also die Werte 3 und 0.05 ohne Lücke hintereinander. Du meintest vermutlich 3.5 / 100 oder 3.5%.

    Weis da jemand weiter? Ich habe schon number_format, sprintf usw. ausprobiert.
    Ich glaube irgendwas mache ich falsch?!

    Ja, irgendwas machst du offensichtlich falsch. Was, können wir dir nicht sagen, weil wir nicht wissen, *was* du machst.

    Ciao,
     Martin

    --
    Alleine sind wir stark ...
    gemeinsam sind wir unausstehlich!
    1. bekomme ich die Ausgabe

      30.05

      also die Werte 3 und 0.05 ohne Lücke hintereinander.

      Das beantworte meine Folgefrage - danke, daran hab' ich nicht gedacht..

  3. Ich habe in einer Tabelle eine Kommazahl, sagen wir "3,5" stehen.

    In einer MySQL-Tabelle mit DECIMAL-Datentyp der ggf. auf zwei Nachkommastellen begrenzt ist?

    Ich glaube irgendwas mache ich falsch?!

    Du könntest ein SQL-Problem und kein PHP-Problem haben.

    Also rechnerisch sieht es so aus "3,5 / 100"

    Liefert bei mir 30.05 - warum ist aber für mich grade nicht nachvollziehbar ((float)3,5 liefert nämlich 35)

    3.5 / 100 liefert wie gewünscht 0.035

    1. Hallo,

      Also rechnerisch sieht es so aus "3,5 / 100"
      Liefert bei mir 30.05 - warum ist aber für mich grade nicht nachvollziehbar

      ist vollkommen logisch: schreibe die Werte 3 und 5/100 ohne Zwischenraum hintereinander.

      ((float)3,5 liefert nämlich 35)

      In einem echo-Statement? Auch klar: (float)3 ergibt in der Ausgabe die 3, dann kommt -wieder ohne Zwischenraum- eine 5 dahinter.

      3.5 / 100 liefert wie gewünscht 0.035

      ACK.

      So long,
       Martin

      --
      Disziplin: Teppichböden wiederfinden, wenn man sie verlegt hat.
      1. ist vollkommen logisch: schreibe die Werte 3 und 5/100 ohne Zwischenraum hintereinander.

        Ja, eh klar - so weit hab ich da vorher nicht gedacht :)

        1. Hi,

          ist vollkommen logisch: schreibe die Werte 3 und 5/100 ohne Zwischenraum hintereinander.
          Ja, eh klar - so weit hab ich da vorher nicht gedacht :)

          naja, für mich ist seit gut 25 Jahren der Punkt *das* Dezimaltrennzeichen; das Komma betrachte ich nur als Zeichen, das Werte voneinander trennt.
          Daher bin ich auch immer etwas grantig, wenn Formulare bei der Eingabe ein Komma als Dezimalzeichen vorschreiben und den Punkt abweisen (beispielsweise beim Onlinebanking, oder bei ebay).

          Ciao,
           Martin

          --
          Lieber eine Stumme im Bett, als eine Taube auf dem Dach.
          1. naja, für mich ist seit gut 25 Jahren der Punkt *das* Dezimaltrennzeichen; das Komma betrachte ich nur als Zeichen, das Werte voneinander trennt.

            Das ist in Österreich sprachlich etwas schwieriger, da dediziert das Komma als Spearator für die "Nachkommastellen" angesehen wird.

            Im allgemeinen Sprachgebrauch gibt es sonst kein Komma - das heisst Beistrich.

            Ergo habe ich logisch kein Problem, ein Komma als Dezimaltrennzeichen zu akzeptieren.

          2. @@Der Martin:

            nuqneH

            Daher bin ich auch immer etwas grantig, wenn Formulare bei der Eingabe ein Komma als Dezimalzeichen vorschreiben und den Punkt abweisen (beispielsweise beim Onlinebanking, oder bei ebay).

            Full ACK. Besonders nervig ist es, da auf meiner Tastatur im Nummernblock neben [0] eben [.] ist, nicht [,].

            Das heißt, ich muss bei der Eingabe eines numerischen(!!) Wertes zwischen Nummernblock und alphanumerischem Block hin- und herspringen. Voll bescheuert – Usability ist etwas anderes.

            Qapla'

            --
            Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
            1. Hi!

              Besonders nervig ist es, da auf meiner Tastatur im Nummernblock neben [0] eben [.] ist, nicht [,].

              Wenn du eine dem Kontext unangepasste Tastatur verwendest ... solltest du sie dir umbelegen. Dafür gibt es für alle bedeutenden Betriebssysteme passende Tools.

              Das heißt, ich muss bei der Eingabe eines numerischen(!!) Wertes zwischen Nummernblock und alphanumerischem Block hin- und herspringen.

              <nichtversteh class="falschversteh"> Was betonst du denn das Wort nummerisch so? Für was anderes als nummerische Werte eignet sich der Nummernblock sowieso nicht richtig.</nichtversteh>

              In einem nicht mehr existierenden Staat gab es Tastaturen für PCs, die eine normal große 0-Taste hatten, dafür aber je eine Taste für Punkt und Komma.

              Bild

              Lo!

              1. @@dedlfix:

                nuqneH

                Was betonst du denn das Wort nummerisch so?

                Weil ich als Nutzer erwarte, eine numerische Eingabe auch auf dem numerischen Tastaturblock tätigen kann; die Bastler sieser Formulare dies aber völlig unnützerweise vereiteln.

                Und was geht mich die Rechtschreibdeform an?

                In einem nicht mehr existierenden Staat gab es Tastaturen für PCs, die eine normal große 0-Taste hatten, dafür aber je eine Taste für Punkt und Komma.

                Siehste, war doch nicht alles schlecht in der DDR. ;-)

                Besser als Punkt und Komma im Nummernblock sind aber Formulare, die Punkt und Komma als Dezimaltrennzeichen zulassen. Die Beschränkung auf Komma ist ein Usability-Problem.

                Qapla'

                --
                Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
                1. Hi!

                  Weil ich als Nutzer erwarte, eine numerische Eingabe auch auf dem numerischen Tastaturblock tätigen kann; die Bastler sieser Formulare dies aber völlig unnützerweise vereiteln.

                  Die Frage ist, was will man zulassen und was will man daraus erkennen? Ist 1.024 nun 1tausend42 oder 1komma024? Und wie sieht es mit 1,024 aus, usw.?

                  Vereiteln ist bestimmt nicht das richtige Wort, denn es ist Aufwand, eine Localization einzuprogrammieren. Und dann stellt sich die Frage nach der Wirtschaftlichkeit. Lohnt es sich für "irgendwelche Exoten" etwas zu erstellen oder reicht es, wenn 99% der Zielgruppe damit zurecht kommen?

                  Beim Dezimaltrennzeichen ist das noch einfach, weil sich die Welt größtenteils nur in . und , unterscheidet, aber beim Datum ist es schon ungleich schwerer, kommt da ja auch noch eine Relevanz bei der Reihenfolge hinzu.

                  Und was geht mich die Rechtschreibdeform an?

                  Selbst die verlinkte Seite zeigt nummerisch als Alternativschreibweise an. :-P

                  Besser als Punkt und Komma im Nummernblock sind aber Formulare, die Punkt und Komma als Dezimaltrennzeichen zulassen. Die Beschränkung auf Komma ist ein Usability-Problem.

                  Achwas. Wenn etwas gegen eine Norm verstößt - was dein Dezimalpunkt hierzulande tut - ist das kein Usability-Problem. Ein Parkverbot wäre dann nämlich auch eins. :-)

                  Lo!

                  1. @@dedlfix:

                    nuqneH

                    Die Frage ist, was will man zulassen und was will man daraus erkennen? Ist 1.024 nun 1tausend42 oder 1komma024? Und wie sieht es mit 1,024 aus, usw.?

                    Argl, das Tausendertrennzeichen! Dass einige Nutzer dies verwenden könnten, hatte ich nicht bedacht. Und selbst der explizite Hinweis „Verwenden Sie keine Tausendertrennzeichen“ wird den DAU nicht davon abbringen, es doch zu tun.

                    Man könnte zu prüfen, ob nach einem Trennzeichen bis zu 2 Ziffern oder 3 Ziffern folgen. Wenn bei der Nutzereingabe aber eine Taste nicht reagiert und eine Ziffer verloren geht oder eine Taste prellt und eine Ziffer zuviel ist, nimmt das System einen Betrag an, der um einige Größenordnungen von dem vom Nutzer angedachten Betrag abweicht. Das wäre fatal.

                    Insofern ist die Beschränkung auf ',' als Trennzeichen zwar immer noch ärgerlich, aber nachvollziehbar.

                    Qapla'

                    --
                    Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
                    1. Hi!

                      [potentielle Fehlerursachen ...] nimmt das System einen Betrag an, der um einige Größenordnungen von dem vom Nutzer angedachten Betrag abweicht. Das wäre fatal.

                      Bei kritischen Anwendungsfällen kann man ja mit einer Vorschau arbeiten, die anzeigt, was das System letztlich verstanden hat. (Wobei man da wie immer die Balance zwischen nervigen Bestätigungen und der Sicherheit suchen muss.)

                      Lo!

              2. Hallo,

                Was betonst du denn das Wort nummerisch so?

                mir tut's immer noch in den Augen weh, "numerisch" mit zwei m geschrieben zu sehen, und ich bin froh, dass die traditionelle Schreibung mit einem m nach wie vor als Alternative zulässig ist.

                In einem nicht mehr existierenden Staat gab es Tastaturen für PCs, die eine normal große 0-Taste hatten, dafür aber je eine Taste für Punkt und Komma.

                Das war ja mal richtig sinnvoll. Denn beim Eingeben von Zahlenreihen braucht man in der Regel sowohl Dezimal- als auch Trennzeichen. Die heutigen MF2-Tastaturen sehen aber nur noch eins von beiden auf dem numerischen Tastenblock vor.

                Ciao,
                 Martin

                --
                Küssen ist die schönste Methode, eine Frau zum Schweigen zu bringen.
                1. Hi!

                  In einem nicht mehr existierenden Staat gab es Tastaturen für PCs, die eine normal große 0-Taste hatten, dafür aber je eine Taste für Punkt und Komma.
                  Das war ja mal richtig sinnvoll. Denn beim Eingeben von Zahlenreihen braucht man in der Regel sowohl Dezimal- als auch Trennzeichen. Die heutigen MF2-Tastaturen sehen aber nur noch eins von beiden auf dem numerischen Tastenblock vor.

                  Man hat es nur leider in nachfolgenden Modellen nicht mehr beibehalten sondern die zusätzliche Taste mit einer Doppel-0 belegt, so wie es auch auf vorhergehenden Modellen üblich war.

                  Lo!