par
Truc » 07 oct. 2005, 21:07
et pour je pensais que mon bout de code était clair...
au début tu nous propose:
if($nombre1=10)
{
$resultat1 = round((($nombre1*$nombre2)*$taux1)*$diff);
}
elseif($nombre1=11)
{
$resultat1 = round((($nombre1*$nombre2)*($taux1*0.99))*$diff);
}
elseif($nombre1=12)
{
$resultat1 = round((($nombre1*$nombre2)*($taux1*0.99*0.99))*$diff);
}
....
et donc je te propose de remplacer tous ces tests sur 3 ligne
alors tu a du remarquer que pour:
le 1er cas tu multiplis par 0.99^
0
le 2eme cas tu multiplis par 0.99^
1 (0.99)
le 3eme cas tu multiplis par 0.99^
2 (0.99*0.99)
...
et donc mon code retire la l'exposant:
le 1er cas 0.99^
0 => exposant = 0 => $nombre1-10 = 10-10=
0
le 2eme cas 0.99^
1 => exposant = 1 => $nombre1-10 = 11-10=
1
le 2eme cas 0.99^
2 => exposant = 2 => $nombre1-10 = 12-10=
2
....
Calcul de l'exposant
$exposant=($nombre1-10);
Calcul du nombre par lequel il faut multiplier $taux1
$multi_taux=pow(0.99, $exposant);
resultat de ce calcul:
le 1er cas $multi_taux=0.99^
0 = 1
le 2eme cas $multi_taux=0.99^
1 = 0.99
le 3eme cas $multi_taux=0.99^
2 = 0.99*0.99
...
donc resulat final:
$resultat1 = round((($nombre1*$nombre2)*($taux1*$multi_taux))*$diff);
Donc je pense que c'est ce que tu veut, et il me semble que c'est plus rapide qu'une boucle et des if

et pour je pensais que mon bout de code était clair...
au début tu nous propose:
[php]
if($nombre1=10)
{
$resultat1 = round((($nombre1*$nombre2)*$taux1)*$diff);
}
elseif($nombre1=11)
{
$resultat1 = round((($nombre1*$nombre2)*($taux1*0.99))*$diff);
}
elseif($nombre1=12)
{
$resultat1 = round((($nombre1*$nombre2)*($taux1*0.99*0.99))*$diff);
}
....
[/php]
et donc je te propose de remplacer tous ces tests sur 3 ligne :o
alors tu a du remarquer que pour:
le 1er cas tu multiplis par 0.99^[b]0[/b]
le 2eme cas tu multiplis par 0.99^[b]1 (0.99)[/b]
le 3eme cas tu multiplis par 0.99^[b]2 (0.99*0.99)[/b]
...
et donc mon code retire la l'exposant:
le 1er cas 0.99^[b]0[/b] => exposant = 0 => $nombre1-10 = 10-10=[b]0[/b]
le 2eme cas 0.99^[b]1[/b] => exposant = 1 => $nombre1-10 = 11-10=[b]1[/b]
le 2eme cas 0.99^[b]2[/b] => exposant = 2 => $nombre1-10 = 12-10=[b]2[/b]
....
Calcul de l'exposant
[php]
$exposant=($nombre1-10);
[/php]
Calcul du nombre par lequel il faut multiplier $taux1
[php]$multi_taux=pow(0.99, $exposant);[/php]
resultat de ce calcul:
le 1er cas $multi_taux=0.99^[b]0 = 1[/b]
le 2eme cas $multi_taux=0.99^[b]1 = 0.99[/b]
le 3eme cas $multi_taux=0.99^[b]2 = 0.99*0.99[/b]
...
donc resulat final:
[php]$resultat1 = round((($nombre1*$nombre2)*($taux1*$multi_taux))*$diff);[/php]
Donc je pense que c'est ce que tu veut, et il me semble que c'est plus rapide qu'une boucle et des if :wink: