Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/06/2008, 16h47   #1
Membre régulier
 
Avatar de nimbus_77
 
Inscription : décembre 2007
Messages : 109
Détails du profil
Informations personnelles :
Âge : 56

Informations forums :
Inscription : décembre 2007
Messages : 109
Points : 78
Points : 78
Envoyer un message via MSN à nimbus_77
Par défaut Arrondi dynamique ?

Bonjour

Je recupere un poids : $P
ce $P doit être arrondi à la dizaine supérieure :

53 => 60
164 => 170
281 => 290
1512 => 1520

J'ai fait ceci , mais cela me parait un peu tordu, bien que cela marche..Y a t il un autre moyen ?
Code :
1
2
3
4
5
6
 
<?php
$P = '10272'; 
if(substr($P,-1) != '0' ) {$P_new =((substr($P,-6,-2)).(substr($P,-2,-1)+1).(0))  ; }
echo $P_new  ;
?>
merci par avance

Nimbus
nimbus_77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 16h49   #2
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
Tu divises par 10 tu fais un ceil() et tu multiplies par 10 non ?
Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 16h51   #3
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
J'ai bien ça :
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 17h32   #4
Membre régulier
 
Avatar de nimbus_77
 
Inscription : décembre 2007
Messages : 109
Détails du profil
Informations personnelles :
Âge : 56

Informations forums :
Inscription : décembre 2007
Messages : 109
Points : 78
Points : 78
Envoyer un message via MSN à nimbus_77
Par défaut merci à vous deux

j'aurai appris 2 choses de plus au jourd'ui :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<?php
$P = '10272'; 
if(substr($P,-1) != '0' ) {$new =((substr($P,-10,-2)).(substr($P,-2,-1)+1).(0))  ; }
echo $new  .'<br>' ;
 
$new_2 =((int)($P / 10) * 10)+10;
 
echo $new_2  .'<br>' ;
 
$new_3 =( ceil($P / 10))*10 ;
 
echo $new_3   ;
 
?>
3 Manières d'obtenir le même résultat, l'embarras du choix !

nimbus
nimbus_77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 18h29   #5
Membre chevronné
 
Inscription : janvier 2006
Messages : 918
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 918
Points : 735
Points : 735
Tu peux aussi ajouter systématiquement la différence entre 10 et le dernier chiffre. Il faut laisser parler son imagination.
guidav est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 21h49   #6
Membre régulier
 
Avatar de nimbus_77
 
Inscription : décembre 2007
Messages : 109
Détails du profil
Informations personnelles :
Âge : 56

Informations forums :
Inscription : décembre 2007
Messages : 109
Points : 78
Points : 78
Envoyer un message via MSN à nimbus_77
Par défaut bon ...

j'ai testé les 4 possibilités :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<?php
$P = '214';
if(substr($P,-1) != '0' ) {$new =((substr($P,-10,-2)).(substr($P,-2,-1)+1).(0))  ; }
echo $new*1.24  .'<br>' ;
 
$new_2 =((int)($P / 10) * 10)+10;
echo $new_2*1.24 .'<br>' ;
 
$new_3 =( ceil($P / 10))*10 ;
echo $new_3*1.24 . '<br>'  ;
 
if(substr($P,-1) != '0' ) {$new_4 = $P +  (10-(substr($P,-1) )) } ;
 
echo $new_4*1.24   ;
?>
les réponses dans un test. php sont :
272.8
272.8
272.8
272.8
parfait.

Sauf que lorsque je les applique dans mon code j'ai des résultats aléatoires :
sub et int donnent : 265,57
ceil donne : 273,02
diff donne : 273,02

?

$P est une extraction SAP dans excel, convertie en entier et uploader dans mysql, ( champs varchar(..) )

J'ai lu que ceil() possédait des virgules flottantes,
est ce l'origine de ses dissonnances ?
mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
/* extraction des donnees tarifaire */
con_trps();
$trps = $_SESSION['trps'];
$base_tarif = ('dls_trps_' . $trps) ;
        $ext = "SELECT * FROM $base_tarif where dpt='$dpt'" ;
        $res_ext = mysql_query($ext) or die ("ext tranche failed");
        while ($row_2 = mysql_fetch_object ($res_ext))
                {
if($P <= ($row_2->p11))     {$tarif = $row_2->t1;  $tr=11;}
elseif($P <= ($row_2->p12)) {$tarif = $row_2->t2;  $tr=12;}
elseif($P <= ($row_2->p13)) {$tarif = $row_2->t3;  $tr=13;}
elseif($P <= ($row_2->p14)) {$tarif = $row_2->t4;  $tr=14;}
elseif($P <= ($row_2->p15)) {$tarif = $row_2->t5;  $tr=15;}
elseif($P <= ($row_2->p16)) {$tarif = $row_2->t6;  $tr=16;}
elseif($P <= ($row_2->p17)) {$tarif = $row_2->t7;  $tr=17;}
elseif($P <= ($row_2->p18)) {$tarif = $row_2->t8;  $tr=18;}
elseif($P <= ($row_2->p19)) {$tarif = $row_2->t9;  $tr=19;}
elseif($P <= ($row_2->p20)) {$tarif = $row_2->t10; $tr=20;}
elseif($P <= ($row_2->p21)) {$tarif = $row_2->t11; $tr=21;}
elseif($P <= ($row_2->p22)) {$tarif = $row_2->t12; $tr=22;}
elseif($P <= ($row_2->p23)) {$tarif = $row_2->t13; $tr=23;}
elseif($P <= ($row_2->p24)) {$tarif = $row_2->t14; $tr=24;}
elseif($P >  ($row_2->p25)) {$tarif = $row_2->t15; $tr=25;}
                }
echo "<td bgcolor='white'><p class='v1'>". number_format($tarif , 2, ',', ' ') . "</p></td>";
if($tr > '20'){
 
if(substr($P,-1) != '0' ) {$P = = $P +  (10-(substr($P,-1) )) ;}
 
//if(substr($P,-1) != '0' ) {$new =((substr($P,-10,-2)).(substr($P,-2,-1)+1).(0))  ; }
//                                      }
//if($tr > '20') {$P  =(ceil($P/10))*10;}
//if($tr > '20') {  ( ( (int)($P / 10) ) * 10 ) +10 ;}
                }
else {}
if($tr < '20') {$cout_jour = $tarif ;}
else{$cout_jour = ( $P * $tarif ) ; }
        echo "<td align='right' bgcolor='mistyrose'><p class='v2'><b>". number_format($cout_jour , 2, ',', ' ') . "</p></td>";
 
                echo "</tr>";
nimbus_circonspect : les ordinateurs sont réputés intelligents, donc je ne le suis pas ?
nimbus_77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 10h06   #7
Membre régulier
 
Avatar de nimbus_77
 
Inscription : décembre 2007
Messages : 109
Détails du profil
Informations personnelles :
Âge : 56

Informations forums :
Inscription : décembre 2007
Messages : 109
Points : 78
Points : 78
Envoyer un message via MSN à nimbus_77
Par défaut Mea Culpa

Bon c'est de mon fait ...

les tarifs applicables au dela de $t10 sont des prix aux 100 kg,
par simplification ( ou fainéantise ) j'ai enregistré dans la base
un prix au kilo, au lieu du prix a 100 kg et
compte tenu de 'number_format' calé à 2, la 3 éme décimale est tronquée.

à bientôt

nimbus
nimbus_77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h41.


 
 
 
 
Partenaires

Hébergement Web