is_int funktioniert nicht

schiese

Erfahrenes Mitglied
Hallo,
ich habe ein Problem mit is_int(). Ich möchte die Anzhal der Nachkommastellen einer Zahl ermitteln.
Mein Program soll, sobald der Wert $dsn vom Typ Integer ist, die Schleife abbrechen und den Wert von $x in einer anderen Variablen speichern. Nur klappt es mit is_int() nicht. Die Zahl hat wohl ewig Nachkommastellen...

PHP:
$divisormaxnachkommastellen = 3;

switch($divisormaxnachkommastellen) {

case(0):
$divisor = (1 * rand(1000,10000));
break;

case(1):
$divisor = (0.1 * rand(1000,10000));
break;

case(2):
$divisor = (0.01 * rand(1000,10000));
break;

case(3):
$divisor = (0.001 * rand(1000,10000));
break;

}



$dsn = $divisor;
for($x=0;$x<=($divisormaxnachkommastellen);$x++) {
if (is_int($dsn)) {
$ks = $x;
break;
}
$dsn *= 10;
echo "<p>".$dsn;
}

Gruß schiese
 
Mit einem var_dump siehst du zeimlich schnell, dass es kein int ist
PHP:
    var_dump($dsn, is_int($dsn));
ergibt
Code:
float(9805)
bool(false)

Aber du kannst mit floor($dsn) - $dsn die Nachkommastellen ermitteln und gegen 0 vergleichen

PHP:
    if ((floor($dsn) - $dsn) == 0) {
        $ks = $x;
        break;
    }
 
Zurück