Ankündigung

Einklappen
Keine Ankündigung bisher.

Zahlendarstellung

Einklappen

Neue Werbung 2019

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

  • Zahlendarstellung

    Hallo Forum,

    bin php-Anfänger und verzuweifele bereits seit einigen Tagen bei der folgenden (für euch wahrscheinlich sehr leichten) Aufgabe:

    [{ $MwSt|number_format:"2.Of"|replace:".":"," }]

    so umändert, dass Zahlen wie folgt dargestellt werden:

    10.000,00 - 1.000,00 - 100,00
    und nicht: 10,000,00 - 1,000,00

    also wie man umgeht, dass zusätzlich zur Nachkommastelle
    auch der Tausenderpunkt in ein "," verwandelt wird?

    Hintergrund:
    Ich muss eine Zahl mit beliebigen Nachkommastellen, die
    jeweils einen 'Punkt' als Trennungszeichen für Nachkommastelle und
    Tausenderpunkt hat (Bsp.: 1.000.987563) in einen String umwandeln,der:
    1.) die Nachkommastellen auf 2 RUNDET (hier also .99)
    2.) den Punkt bei der Nachkommastelle in ein Komma umwandelt (also 0,99)
    3.) den Punkt/die Punkte bei der/den Tausenderstelle(n) unberührt lässt
    (also 1.000,99)

    Das ist doch ein alltägliches Problem und taucht ständig auf - dafür muss es
    doch eine einfache Lösung/Ergänzung geben, oder???

  • #2
    Ich hab noch nicht ganz verstanden was du möchtest, aber mit der PHP Funktion [MAN]number_format[/MAN] kannst du eine Zahl übergeben (float) und angeben was als Tausender- bzw. als Nachkommastellentrennzeichen genutzt werden soll. Da kannst du deine Zahl entsprechend deinen Vorgaben formatieren.

    Kommentar


    • #3
      Zitat von Laie123 Beitrag anzeigen
      Ich muss eine Zahl mit beliebigen Nachkommastellen, die
      jeweils einen 'Punkt' als Trennungszeichen für Nachkommastelle und
      Tausenderpunkt hat (Bsp.: 1.000.987563) in einen String umwandeln
      Wenn die Zahl als Float vorliegt, hat sie keine Trennungszeichen. Ich hab dein Anliegen auch nicht verstanden.
      Frage: Wie liegt die 'Zahl' vor? Als Float oder als String '1.000.987563'

      Für Float hat Flor1an dir schon den richtigen Weg gezeigt.

      Kommentar


      • #4
        Vielleicht nochmal ganz einfach:

        Ich möchte die Zahl '1.000.987563'
        umwandeln in die Darstellung '1.000,99'
        (also Tausendertrennzeichen bleibt der Punkt - Nachommastellen auf 2 gerundet und als Trennzeichen das Komma statt dem Punkt)

        Mit dem Befehl |number_format:"2.Of"|replace:".":","
        macht er daraus folgendes: '1,000,99'

        Er ersetzt also jeden Punkt durch ein Komma und nicht nur den
        Punkt bei der Nachkommastelle.

        Ich bräuchte also eine Erweiterung in der Art:
        'Ersetze nur den ersten Punkt oder ersetze nur die Nachkommastelle durch ein Komma


        Habe - wie erwähnt - da schon mit vielen Variationen 'rumgespielt'. Das war allerdings erfolglos.....

        Kommentar


        • #5
          Zitat von Laie123 Beitrag anzeigen
          Mit dem Befehl |number_format:"2.Of"|replace:".":","
          Was soll das für eine PHP-Anweisung sein?

          Kommentar


          • #6
            Zitat von Laie123 Beitrag anzeigen
            Ich möchte die Zahl '1.000.987563'
            das ist keine Zahl. Woher stammt der Wert?

            Kommentar


            • #7
              Da steht zudem 2.Of und nicht etwa 2.0f. Das ist gewollt?

              Das ist außerdem in der Tat kein PHP-Code, sondern irgendeine Template-Syntax.

              Ich würde empfehlen, die Werte nach Möglichkeit korrekt zu formatieren, bevor du sie an die Templates übergibst. Das wird sonst unter Umständen sehr hässlich.

              Kommentar


              • #8
                So funktioniert es auf jeden Fall - bis auf die Einschränkung,
                dass er halt auch den Tausenderpunkt durch ein Komma ersetzt.

                Ich brauche diese Formatierung nur für die 'Ausgabe', nicht um damit weiterzurechnen.

                Hm - ich bekomme die Zahl ja so, wie im 'amerikanischen' üblich, nämlich in der Form 1.000.963
                (bis auf die Anzahl der Nachkommastellen - die ja aber nicht das Problem sind)
                Das Problem ist einfach, dass er auch den Tausenderpunkt durch ein Komma ersetzt....

                Kommentar


                • #9
                  Also ich bin mir relativ sicher das die Amis Komma als Tausender Trennzeichen haben.

                  Und zu aller erst würde ich auch einfach mal testen ob number_format das nicht alleine löst.

                  {$var|number_format:2:".":","}

                  Runden scheint zu klappen von daher müsste das ganze eine Zahl am wickel zu haben mit der gearbeitet werden kann.

                  Kommentar


                  • #10
                    Zitat von Laie123 Beitrag anzeigen
                    Hm - ich bekomme die Zahl ja so, wie im 'amerikanischen' üblich, nämlich in der Form 1.000.963
                    Wenns wirklich eine Zahl ist, dann "bekommst" du doch erstmal eine Zahl OHNE diese ganzen Punkte. Das meinen die oben.
                    Wenn dann hast du doch nur EINEN Punkt, der bei uns das Komma darstellt.
                    Also sowas: 1000963.4676

                    PHP-Code:
                    $zahl "1000963.4676";
                    $formatierte_zahl number_format($zahl2',''.'); 
                    ==> 1.000.963,47

                    2 = Nachkommastellen
                    , = Nachkommastelle durch Komma trennen
                    . = Tausenderpunkte

                    Wenn du dir jetzt deinen Code anschaust, du formatierst erst mit number_format die Zahl und ersetzt anschlißend mit replace die eben gesetzten Punkte durch Kommas.

                    Kommentar


                    • #11
                      Vielen Dank für Eure Mühen - habe die Lösung gefunden.

                      'Varon' war am nächsten dran

                      Wenn es interessiert: [{ $Var|number_format:"2":",":"." }]

                      Kommentar


                      • #12
                        Was ist das denn jetzt für eine Template-Syntax?

                        Kommentar


                        • #13
                          Smarty-like

                          Kommentar


                          • #14
                            Zitat von mermshaus Beitrag anzeigen
                            Was ist das denn jetzt für eine Template-Syntax?
                            OXID glaube ich war das

                            Kommentar


                            • #15
                              Jo, OXID nutzt Smarty, zumindest bis v5.

                              Kommentar

                              Lädt...
                              X