[PHP] Addition de variable

Résolu/Fermé
Skymaster - 20 janv. 2010 à 16:24
 Skymaster - 20 janv. 2010 à 17:23
Bonjour,

Je tente dans un fichier d'additionner 2 variables mais rien n'y fait.

Pour sécuriser un peu, je veux que mon code pin soit additionner avec un numéro de carte de fidélité pour donner le codepin sécurisé !

$add1 = $_POST['codepin'];
$add2 = $_POST['cartefid'];
$codepin = $add1 + $add2;

Quand je met en codepin : 1981 par exemple et en cartefid : 1111111111111, j'obtiens :

1111111113090 au lieu de 3092 à la fin.

Si le dernier chiffre dépasse 5, c'est arrondi au supérieur et si le dernier chiffre est en dessous de 5, c'est arrondi à l'inférieur.

J'ai trouvé sur pas mal de forum des fonctions pour arrondir mais pas pour annuler l'arrondi automatique ;)
A voir également:

2 réponses

Bonjour

Ce n'est pas un arrondi automatique, c'est un manque de précision dans les calculs. Tu fais un calcul sur 13 chiffres significatifs, ce qui est à la limite des nombres standard du PHP (quoique la manuel dise 14).
Si tu sais qu'il n'y aura jamais de retenue au-delà du 6ème chiifre par exemple, tu peux découper cartefid en 2 tranches et faire l'addition sur les poids faibles, puis remettre bout à bout ...

$t1=substr($ad11,-6)); // extrait 6 chiffres poids faibles
$t1=$t1+$add2; // addition sans problème de précision
while (strlen($t1)<6) $t1 = '0'.$t1; // pour remettre les éventuels '0' qui ont disparu lors du passage en numérique
$codepin=substr($add1,0,strlen($add1)-6).t1; // on remet les deux morceaux ensemble

S'il y a une retenue (strlen($t1)>6) il faut l'intégrer dans la tranche de poids fort, ce qui n'est pas très compliqué non plus
2
C'est parfaitement ça !

Merci beaucoup cher ami développeur :)
2

Discussions similaires