PHP Zahlenkonvertierung mit float
Hallo zusammen,
ich habe MySQL- Datenbank-Tabellen mit Feldern vom Typ decimal und char. Lese die Inhalte per
PHP aus. Soweit kein Problem.
Die Applikation, die die Weiterverarbeitung übernimmt, verlangt zwingend ein Komma (kein
Punkt) für die Zahlenwerte. Da ich auch Texte habe, kann ich nicht einfach alle Punkte in Kommata
per PHP umwandeln.
Eine Fallunterscheidung ist bei der Anzahl von Tabellen und Feldern leider unmöglich.
Deshalb versuche ich, den Wert per PHP mit (float) umzuwandeln. Geht das gut, tausche ich
den Punkt in Komma aus. Geht die Umwandlung schief, ist es ein Text, bei dem es nichts
umzuwandeln gibt.
Nun habe ich in den decimal Feldern auch eine 0 drin, die als 0.000000 gespeichert wurde.
Die Umwandlung (float)0.000000 verhält sich leider wie ein String, d.h. ich erkenne die Zahl hier
nicht.
Kennt jemand hier eine Lösung des Problems? Bietet sich für die Typenbestimmung etwas
anderes für float an?
Leider kan ich aus Performancegründen keine umfangreiche Fallunterscheidung machen, d.h.
mit max. 2 Bedingungen sollte ich wissen, ob ich es mit einem String oder mit einer Zahl zu tun
habe.
Danke im Voraus.
Gruss
ich habe MySQL- Datenbank-Tabellen mit Feldern vom Typ decimal und char. Lese die Inhalte per
PHP aus. Soweit kein Problem.
Die Applikation, die die Weiterverarbeitung übernimmt, verlangt zwingend ein Komma (kein
Punkt) für die Zahlenwerte. Da ich auch Texte habe, kann ich nicht einfach alle Punkte in Kommata
per PHP umwandeln.
Eine Fallunterscheidung ist bei der Anzahl von Tabellen und Feldern leider unmöglich.
Deshalb versuche ich, den Wert per PHP mit (float) umzuwandeln. Geht das gut, tausche ich
den Punkt in Komma aus. Geht die Umwandlung schief, ist es ein Text, bei dem es nichts
umzuwandeln gibt.
Nun habe ich in den decimal Feldern auch eine 0 drin, die als 0.000000 gespeichert wurde.
Die Umwandlung (float)0.000000 verhält sich leider wie ein String, d.h. ich erkenne die Zahl hier
nicht.
Kennt jemand hier eine Lösung des Problems? Bietet sich für die Typenbestimmung etwas
anderes für float an?
Leider kan ich aus Performancegründen keine umfangreiche Fallunterscheidung machen, d.h.
mit max. 2 Bedingungen sollte ich wissen, ob ich es mit einem String oder mit einer Zahl zu tun
habe.
Danke im Voraus.
Gruss
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 79709
Url: https://administrator.de/contentid/79709
Ausgedruckt am: 25.11.2024 um 12:11 Uhr
5 Kommentare
Neuester Kommentar
@zoro17
Hi,
is_double(variable) gibt am Bildschirm eine 1 aus(true), wenn variable
eine Zahl ist.
doubleval(variable) wandelt eine Variable vom Typ String, die eine
Dezimalzahl darstellt, in einen Typ Dezimalzahl um.
$var="0.12"; wäre eine Variable vom Typ String.
$var=doubleval($var);
echo is_double($var); gibt auch hier true aus.
Gruß
Günni
Hi,
is_double(variable) gibt am Bildschirm eine 1 aus(true), wenn variable
eine Zahl ist.
doubleval(variable) wandelt eine Variable vom Typ String, die eine
Dezimalzahl darstellt, in einen Typ Dezimalzahl um.
$var="0.12"; wäre eine Variable vom Typ String.
$var=doubleval($var);
echo is_double($var); gibt auch hier true aus.
Gruß
Günni
@zoro17
Hi,
$var="0.15"; // <-- Stringvariable
if(is_numeric($var)){
echo "JA";
}
Da bei diesem Beispiel ein JA ausgegeben wird, könnte es
auch das sein, was du brauchst.
Da ich aber letztendlich deine Tabellendefinition nicht kenne und
auch nicht deinen Abfrageterm, kann ich hier nur mutmaßen.
Probier's einfach aus, wenn es nicht geht, poste mal mehr Info.
Ach ja, was ich noch sagen(schreiben) wollte:
Eine Null im Format 0.000000 kann ich in meiner Datenbank nicht
ablegen. Da steht immer nur 0. Vielleicht kannst du mir sagen, wie du das
gemacht hast
Gruß
Günni
Hi,
Ich glaube, is_numeric ist das, was ich brauche oder?
$var="0.15"; // <-- Stringvariable
if(is_numeric($var)){
echo "JA";
}
Da bei diesem Beispiel ein JA ausgegeben wird, könnte es
auch das sein, was du brauchst.
Da ich aber letztendlich deine Tabellendefinition nicht kenne und
auch nicht deinen Abfrageterm, kann ich hier nur mutmaßen.
Probier's einfach aus, wenn es nicht geht, poste mal mehr Info.
Ach ja, was ich noch sagen(schreiben) wollte:
Eine Null im Format 0.000000 kann ich in meiner Datenbank nicht
ablegen. Da steht immer nur 0. Vielleicht kannst du mir sagen, wie du das
gemacht hast
Gruß
Günni