Ankündigung

Einklappen
Keine Ankündigung bisher.

Float vereinheitlichen

Einklappen

Neue Werbung 2019

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

  • Float vereinheitlichen

    Diskussionsbeitrag zum Wiki Eintrag: Float vereinheitlichen.

    Die Diskussionsplattform des PHP.de Wiki wurde ins Forum integriert. Durch Klicken des Buttons "Antwort" kannst du an diesem Thema teilnehmen.

  • #2
    Der Kern des Ansatzes liegt wohl im Auffinden des letzten nicht numerischen Zeichens. Das finde ich schon mal sehr smart. Insgesamt sehr nützlich.

    Wenn ich überlege, was ich mir da schon alles für Lösungsansätze habe einfallen lassen....
    [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

    Kommentar


    • #3
      Die (aktuellere) Version auf php-de.github.io enthält noch etwas mehr Gebastel:

      - http://php-de.github.io/jumpto/float-vereinheitlichen/

      Kommentar


      • #4
        Cool. Ich werde zukünftig auf jeden Fall auf einen dieser Ansätze aufbauen. Mein letzter eigener Ansatz hat in einem System mit Usermanagement - das Userland ist daher bekannt - 'zig Länderkürzel nach Kommadezimalstelle und Punktdezimalstelle sortiert vorgehalten...Ja, äh, hüstel. So habe ich das wohl gemacht, ehm.
        [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

        Kommentar


        • #5
          Zitat von mermshaus Beitrag anzeigen
          Die (aktuellere) Version auf php-de.github.io enthält noch etwas mehr Gebastel:

          - http://php-de.github.io/jumpto/float-vereinheitlichen/
          ..und für mich sehr wertvolle Anregungen.

          PHP-Code:
          function strToFloat($s){
              if(! 
          preg_match('/^[\-+]?(?=.*[0-9])([0-9]|[\.,](?![\.,]))*$/',$s)) {
                  return 
          false;
              }
              
          $rc strrpos(' '.$s,'.') > strrpos(' '.$s,',') ? ',' '.';
              
          $s2 str_replace($rc,'',$s);
              
          $s3 str_replace(',','.',$s2);
              if(
          is_numeric($s3)) {
                  return (float)
          $s3 ;
              }
              return 
          $s == $s2 ? (float)str_replace('.','',$s3) : false;

          Der obige Code wurde komplett geändert. Für sinnlose Strings liefert die Funktion jetzt false. Einige Beispiele:
          Code:
          ",1"              -> float(0.1)
          "75"              -> float(75)
          "-34,197,679.43"  -> float(-34197679.43)
          "34.147.629,4"    -> float(34147629.4)
          "3414.629,"       -> float(3414629)
          "3.414.629.269"   -> float(3414629269)
          
          "3,41.629.269"    -> bool(false)
          "3,41y269"        -> bool(false)
          "3,,41.269"       -> bool(false)
          LG jspit

          Kommentar


          • #6
            Habe mich dem Thema gerade wieder zugewandt. Dabei ist mir aufgefallen, dass

            floatAutoDetect (github) und
            strToFloat (oben)

            nicht mit dem teilweise von Franzosen benutzen Leerzeichen als Tausendertrennzeichen klar kommen.

            Beide liefern false bei "1 000,1".

            get_float (github) macht es richtig.
            [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

            Kommentar


            • #7
              Fehler bitte als Issue auf github melden, damit wir kein Ablage-Mikado spielen müssen.
              [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

              Kommentar


              • #8
                Zitat von tr0y Beitrag anzeigen
                Fehler bitte als Issue auf github melden, damit wir kein Ablage-Mikado spielen müssen.
                Würde ich ja gerne machen. Habe aber keine Erfahrung mit github. Wie melde ich da denn jetzt ein issue. Braucht man da ein Account?
                [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

                Kommentar


                • #9
                  Glaube schon ja. Das wäre zumindest auf dieser Seite: https://github.com/php-de/php-de.github.io/issues

                  Da müsste ein „New“-Button sein so rechts-oben-ish.

                  Wenn du Lust drauf hast, das auszuprobieren, keine falsche Scheu.

                  Ansonsten kann das im Zweifel sicher auch wer anders kurz machen, wenn es von Interesse ist.

                  Bei der Sache (Floats vereinheitlichen) muss man sich grundsätzlich halt fragen, wo das enden soll und ob man nicht irgendwann über was drüberbügelt, was eigentlich bloß ein Eingabefehler war und keine Art und Weise, Zahlen in der Inneren Mongolei anzugeben. Übertrieben gesagt.

                  (Wobei „Space“ schon noch eher das Level der anderen Tausendertrennzeichen ist.)

                  Kommentar


                  • #10
                    Also, ich habe da jetzt irgendwo etwas eingetragen, muss aber sagen, dass die Benutzerführung bei github wahrscheinlich von absoluten Fachidioten geschrieben wurde. Trotz intensiver Suche war ich mir nie sicher, ob ich jetzt in dem Bereich bin, wo man zur Sache ein Issue eintragen kann. Zugegeben, ich habe auch nur 15 Minuten investiert. Gruß T.
                    [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

                    Kommentar


                    • #11
                      https://github.com/php-de/php-de.github.io/issues/107

                      Kommentar


                      • #12
                        Danke!
                        [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

                        Kommentar

                        Lädt...
                        X