2013-08-02 3 views
0

Je développe un caluclator PHP et j'ai besoin d'un clarificateur ou de toute autre méthode pour faire l'étape que j'ai faite maintenant. Voici ma situation et la solution que j'ai développée.PHP Division retourne Floating Value

Voyons voir Je MULTIPLIE deux valeurs A, B.

$a=1; 
$b=9; 
$c= $a * $b; 
echo "Output : ".$c; 
echo "<br>"; 
// Now dividing the Values by D. 
$d=1111111111111; 
$e= $c/$d; 
echo "Output after Division : ".$e; 

sortie après division: 8.1000000000008E-12

Je suis sûr, la sortie n'est pas un retour entier, sa valeur flottante.

Mon problème commence ici, je veux informer l'utilisateur que la sortie est un point flottant non un entier exact

// So below I have made a logic to do it. 
if (strpos($e,'E') !== false) { 
    echo 'The returned output is an Floating Value: '; 
} 

Ma Question: Y at-il une autre façon de le faire? pas en vérifiant la sortie contient la chaîne 'E'. Quelque chose comme le PHP interne retourne une certaine valeur qui doit être attrapée ici et montrer à l'utilisateur.

Me prévenir si je fais quelque chose de mal. ou y a-t-il des moyens de le faire?

+1

Une valeur flottante est pas une chaîne: if ($ e == (entier) $ e) {echo 'La sortie renvoyée est une valeur flottante:'; } –

Répondre

1

Si vous voulez vérifier, que la valeur est proche de l'entier, vous pouvez essayer ceci:

<?php 
$tolerance = 1E-6; 

$result = 8.1E-12 + 2; 
if (($result % 1) < $tolerance) 
{ 
    print "$result is close to integer ". (int) $result; 
} 

Prints:

2.0000000000081 is close to integer 2 
+0

dans ce cas si je viens d'obtenir une certaine valeur flottante, il retourne float mais je veux est dans de rares cas lorsque nous ajoutons de grandes valeurs seul. – TomPHP

+0

@TomPHP Lorsque la valeur n'est pas flottante, la fonction retournera false. Il ne retourne pas float, il renvoie true ou false. – user4035

+0

Je ne veux pas vérifier toutes les sorties en tant que valeurs flottantes, ne laisse entendre que les valeurs qui dépassent les limites entières à indiquer aux utilisateurs tels que la sortie sont affichés ci-dessus .. Sortie après division: 8.1000000000008E-12 – TomPHP

0

En dehors de beeing un code horrible, je pense que la fonction rechercher est

bool is_float (mixed $var) 

(http://wwwphp.net/manual/function.is-float.php)

EDIT: comme si

if ($e % 1 !== 0) { 
echo 'The returned output is an Floating Value: '; 
} 
+0

dans ce cas, si je viens d'obtenir une valeur flottante, il renvoie float mais je veux est dans de rares cas lorsque nous ajoutons de grandes valeurs seules. – TomPHP

+0

s'il vous plaît expliquer à nouveau – birdspider

+0

Je ne veux pas que toutes les valeurs flottantes à moi suggéré que les valeurs qui dépassent les limites entières à indiquer aux utilisateurs tels que la sortie sont affichés ci-dessus .. – TomPHP