IF nachkommastelle
Suse
- php
Hallo,
ich möchte gerne eine IF Abfrage machen die Prüft ob die nachkomma (bzw. nach Punkt) Stellen maximal 2 betragen.
12.33 IF schleife läuft
12.454 IF schleife läuft nicht
Welche PHP Funktion kann ich da nutzen?
Danke Suse
Die Funktion Explode z.B.
$zahl = 123.456;
$split_zahl = explode(".", $zahl);
if($split_zahl[1] >= 10 && $split_zahl[1] <= 99) {
[...]
}
Ka wie es bei dir mit 1 Nachkommastelle aussieht, deswegen die 10. Falls die Nachkommastelle nicht größer als 2 sein darf, würde die Bedingung <= 99 völlig reichen.
Die Funktion Explode z.B.
$zahl = 123.456;
$split_zahl = explode(".", $zahl);
if($split_zahl[1] >= 10 && $split_zahl[1] <= 99) {
[...]
}
>
> Ka wie es bei dir mit 1 Nachkommastelle aussieht, deswegen die 10. Falls die Nachkommastelle nicht größer als 2 sein darf, würde die Bedingung <= 99 völlig reichen.
Was ist mit 1.01?
Außerdem soll die Bedingung maximal zwei Nachkommastellen sein und nicht nicht maximal zwei Nachkommastellen.
also:
~~~php
if (isset($split_zahl[1]) && ($split_zahl[1] > 99)) {
}
Außerdem soll die Bedingung maximal zwei Nachkommastellen sein und nicht nicht maximal zwei Nachkommastellen.
also:
if (isset($split_zahl[1]) && ($split_zahl[1] > 99)) {
}
Ich habe mich vertan die Bedingung war doch so rum. Eine Bedingung (neben der ggf. Nicht-Existenz) reicht aber dennoch aus.
~~~php
if (!isset($split_zahl[1]) OR ($split_zahl[1] <= 99)) {
}
Ka wie es bei dir mit 1 Nachkommastelle aussieht, deswegen die 10. Falls die Nachkommastelle nicht größer als 2 sein darf, würde die Bedingung <= 99 völlig reichen.
Was ist mit 1.01?
Hat sich auch erledigt, ich bin jatzt auf Betriebstemperatur.
Hello,
ich möchte gerne eine IF Abfrage machen die Prüft ob die nachkomma (bzw. nach Punkt) Stellen maximal 2 betragen.
12.33 IF schleife läuft
12.454 IF schleife läuft nicht
"IF" leitet keine Schleife ein, sondern eine Entscheidungsstruktur.
Du müsstest aus der Zahl einen String machen, diesen dann am Punkt splitten und dann die Länge des Strings bestimmen.
also: $strzahl = strval($zahl);
if (strpos($strzahl, '.') !== false)
{
$rightstr = strstr($strzahl, '.');
$declen = strlen($rightstr)-1;
}
else
{
$declen = 0;
}
http://de2.php.net/manual/en/function.strval.php
http://de2.php.net/manual/en/function.strstr.php
http://de2.php.net/manual/en/function.strpos.php
Das ist nur ein Beispiel. Es gibt auch andere Lösungswege...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi!
ich möchte gerne eine IF Abfrage machen die Prüft ob die nachkomma (bzw. nach Punkt) Stellen maximal 2 betragen.
12.33 IF schleife läuft
12.454 IF schleife läuft nicht
Unabhängig von der Frage, ob es eine if-Schleife gibt oder nicht ...
Welche PHP Funktion kann ich da nutzen?
... substr_count() in Verbindung mit strpos(). Gegebenenfalls willst du den Fall, dass kein Punkt enthalten ist, gesondert abfragen, denn dann liefert strpos() als Ergebnis ein false, was man leicht mit 0 verwechseln kann. Hängt auch davon ab, ob du Zahlen mit . an nullter Stelle erwartest oder nicht.
Lo!
Hi!
... substr_count() in Verbindung mit strpos(). [...]
Ach, Quark. substr_count() macht was ganz anderes. Dann doch eher: strlen(), substr() und strpos().
Lo!
... und noch eine Möglichkeit:
if (intval($zahl*100) == $zahl*100) echo 'zwei oder weniger Nachkommastellen';
else echo 'mehr als zwei Nachkommastellen';
Danke das war sehr hilfreich
Moin!
if (intval($zahl100) == $zahl100) echo 'zwei oder weniger Nachkommastellen';
else echo 'mehr als zwei Nachkommastellen';
Das Problem, wenn man float-Zahlen mit Multiplikation bearbeitet: Das kann unerwartete Ergebnisse liefern, weil die binäre Darstellung eventuell Rundungsfehler aufweist und deshalb zu falschen Ergebnissen führt.
Die korrekte Behandlung von Nachkommastellen führt man am besten mit Strings durch - da passiert sowas nicht.
- Sven Rautenberg