2010-07-17 6 views
12

Je divise 19/5 où par j'ai utilisé 19/5 mais je suis incapable d'obtenir le reste seulement.Obtenir le reste seulement d'une division en utilisant PHP

Comment l'obtenir.

Merci Jean

+8

Pourquoi 19% 5 ne renvoie pas ce que vous recherchez - cela devrait renvoyer 4. –

+0

Cela renvoie la valeur arrondie qui est 4 – X10nD

+3

@Jean: mais c'est exactement le reste de 19 divisé par 5. Aussi, pourquoi vous annulez mon édition de votre faute de frappe? – BoltClock

Répondre

17

S'il vous plaît essayer it-

$tempMod = (float)($x/$y); 
    $tempMod = ($tempMod - (int)$tempMod)*$y; 
+0

-1 OP veut PHP, pas C ou Java ou d'autres langages – BoltClock

+5

mais c'est une logique :( – Sadat

+2

Merci pour l'édition J'ai révoqué mon downvote – BoltClock

60
echo 19 % 5; 

devrait revenir 4, qui est le reste de 19/5 (3 rem 4) Il n'y a pas besoin d'utiliser plancher , car le résultat d'une opération de module sera toujours une valeur entière.

Si vous voulez que le reste lorsque l'on travaille avec des valeurs en virgule flottante, puis PHP a également la fonction fmod():

echo fmod(19,5.5); 

EDIT

Si vous voulez le reste sous forme décimale:

soit

echo 19/5 - floor(19/5); 

ou

echo (19 % 5)/5 

retournent toutes deux 0,8

+0

J'ai besoin seulement de la valeur décimale – X10nD

+2

Pour l'anecdote, la dernière technique mentionnée est la plus rapide, car il y a moins d'opérations en virgule flottante en cours – mattbasta

+0

merci, c'est génial! –

4

En fonction de la langue que vous utilisez, % peut ne pas être l'opérateur du module. Je suppose que vous utilisez PHP, auquel cas il s'agit de %. D'après ce que je peux voir, il n'est pas nécessaire d'utiliser floor() avec un module entier, il retournera toujours un nombre entier. Vous pouvez l'enlever en toute sécurité. Pour moi, on dirait que ce n'est pas le calcul qui vous donne l'enfer, c'est le code qui l'entoure. Vous devrez poster plus de code. le code que vous avez indiqué est correct.

Edit:

Vous n'êtes pas à la recherche pour le reste, vous êtes à la recherche de la gauche sur la valeur décimale. Il n'a pas de nom.

$leftover = 19/5; 
$leftover = $leftover - floor($leftover); 

Cela devrait être ce que vous cherchez.

+0

Je n'ai besoin que de la valeur décimale – X10nD

+0

It est appelé la fraction. – aross

Questions connexes