Twilo: Umwandlung von float in string

Hallo,

ich versteh folgendes nicht

<?php  
  $zahl = '1.11';  
  $zahl = (float)$zahl;  
  print (string)$zahl;  
?>

warum wird da 1,11 ausgegeben?

aus

<?php  
  $zahl = '1.11';  
  $zahl = (float)$zahl;  
  print $zahl.'';  
?>

wird auch 1,11

wo ist mein Denkfehler? :-(

mfg
Twilo

  1. gudn tach Twilo!

    <?php

    $zahl = '1.11';
      $zahl = (float)$zahl;
      print (string)$zahl;
    ?>

    
    > warum wird da 1,11 ausgegeben?  
      
    wahrscheinlich weil  
    php -r "$a=localeconv();echo $a['decimal\_point'];"  
    ein komma auswirft?  
      
    mehr infos:  
    [php localeconv](http://de3.php.net/manual/en/function.localeconv.php)  
    [php setlocale](http://php3.de/manual/de/function.setlocale.php)  
      
    prost  
    seth
    
    1. Hallo,

      wahrscheinlich weil
      php -r "$a=localeconv();echo $a['decimal_point'];"
      ein komma auswirft?

      so ist es...
      kann ich es nur so behebn, dass ich vor der einen Zeile auf englisch umstelle und danach wieder auf deutsch?

      find das irgendwie doof ;)

      gibt es da keine andere Möglichkeit?

      ich muss eine Zahl mit . in einer Funktion zu ein String Umwandeln

      mfg
      Twilo

      1. gudn tach!

        wahrscheinlich weil
        php -r "$a=localeconv();echo $a['decimal_point'];"
        ein komma auswirft?

        so ist es...
        kann ich es nur so behebn, dass ich vor der einen Zeile auf englisch umstelle und danach wieder auf deutsch?

        du koenntest auch einfach auf englisch umstellen und es dabei lassen. ;-)

        da aber das komma iso-konform ist (im ggs. zum punkt) und ich ja sowas immer unterstuetzen moechte, gebe ich dir die ultimative antwort:

        ich muss eine Zahl mit . in einer Funktion zu ein String Umwandeln

        mach's so wie bisher und...

        *trommelwirbel*

        *crescendo*

        ersetze danach das komma durch einen punkt ;-)

          
        // falls $zahl=='1,11' oder sowas, dann  
        $zahl=str_replace('.', ',', $zahl>");
        

        ansonsten waere die frage, ob du ueberhaupt
        $zahl = (float)$zahl;
        ausfuehren musst.

        prost
        seth

        1. Hallo,

          ersetze danach das komma durch einen punkt ;-)

          // falls $zahl=='1,11' oder sowas, dann
          $zahl=str_replace('.', ',', $zahl>");

            
          so hab ich es auch erstmal gelöst ;)  
            
            
          
          > ansonsten waere die frage, ob du ueberhaupt  
          > `$zahl = (float)$zahl;`{:.language-php}  
          > ausfuehren musst.  
            
          ich verwende das in einer Funktion, als ich die Zahl nicht nach string zurück konvertiert habe, hatte ich falsche Ergebnisse bekommen  
            
          ~~~php
          function _preisCheck($preis){  
            $check = array();  
            $preisMitPunkt = str_replace (',', '.', $preis);  
            $preisMitPunkt = (string)$preisMitPunkt;  
            $preis = (float)$preisMitPunkt;  
            $preis = str_replace (',', '.', (string)$preis);  
            if(($preisMitPunkt === $preis || $preisMitPunkt === $preis.'.0' || $preisMitPunkt === $preis.'.00') && strlen($preisMitPunkt)-1-(int)strpos($preisMitPunkt, '.') <= 2) $check[0] = true;  
            else $check[0] =  false;  
            $check[1] = $preis;  
            return $check;  
          }
          

          kann natürlich sein, dass ich mir das ganze mal wieder zu kompliziert mache ;)

          mfg
          Twilo

          1. gudn tach Twilo!

            ansonsten waere die frage, ob du ueberhaupt
            $zahl = (float)$zahl;
            ausfuehren musst.

            [ code ]
            kann natürlich sein, dass ich mir das ganze mal wieder zu kompliziert mache ;)

            ja.

              
            function _preisCheck($preis){  
              return array(preg_match('/^\d{1,5}([.,]\d{1,2})?$/', $preis), str_replace (',', '.', $preis));  
            }
            

            (zu preg_match siehe die php-doku)
            macht zwar nicht genau das, was du willst, aber den regulaeren ausdruck kannst du ja noch entsprechend anpassen. ich muss jetzt jedenfalls zu meinen broetchen, die werden sonst schwarz.

            prost
            seth