Umwandlung von float in string
Twilo
- php
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
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
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
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
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
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