IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

perte précision opérateur soustraction


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut perte précision opérateur soustraction
    ci-dessous un petit bout de programme où j'affiche différence des valeurs de 2 tableaux cpu2 et cpu, si cette valeur dépasse un certain seuil choisi la case change de couleur vert -> orange ou vert-> rouge

    mon problème vient de la précision rendu par le tableau $delta
    il arrondi à l'unité et non pas à 2 chiffres après la virgule

    $delta[$i] = $cpu2[$i] - $cpu[$i];

    j'ai essayé avec la syntaxe sprintf("%01.2f"$var)); pour chaque membre de la soustraction et pour l$delta mais ça n'affecte en rien le résultat retourné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    echo "<table id='table1'>";
    			echo "<tr><th class='th1'>&nbsp;Indic&nbsp;</th></tr>";
    	  		echo "<tr><td class='th2'>&nbsp;ΔCPU&nbsp;</td></tr>";
     
    			for($i=0; $i < $nb_elt; $i++)
    			{
    		    		if ($i < $nb_elt2)
    			    	{
    			    		$delta[$i] = $cpu2[$i] - $cpu[$i];
    			    		if ($delta[$i] >= $seuil_critique)
    		  			{
    		  				echo "<tr><td class='rouge'><b>&nbsp;".strtoupper($delta[$i])." %"."&nbsp;</b></td></tr>";
    		  			}   
     
    		  			else if (($delta[$i] >= $seuil_warning) && ($delta[$i] < $seuil_critique))
    		  			{
    		  				echo "<tr><td class='orange'><b>&nbsp;".strtoupper($delta[$i])." %"."&nbsp;</b></td></tr>";
    		  			}
    		  			else 
    		  			{
    		  				echo "<tr><td class='vert'><b>&nbsp;".strtoupper($delta[$i])." %"."&nbsp;</b></td></tr>";
    		  			}
    		  		}
     
    		  		if ($i >= $nb_elt2)
    	  			{
    	  				echo "<tr><td class='vert'>&nbsp;".strtoupper($zero)." %"."&nbsp;</td></tr>";
    	  			}
    			}
    echo "</table>";
    merci par avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Ca serai plus lisible avec les balise [CODE]

    Un simple round(), ne t'irais pas?

  3. #3
    Membre régulier Avatar de nimbus_77
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 108
    Points
    108
    Par défaut
    string strtoupper ( string string )
    strtoupper retourne string , après avoir converti tous les caractères alphabétiques en majuscules.

    pourquoi strtoupper ?

    quand à l'addition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        		$delta[$i] = $cpu2[$i] - $cpu[$i];
        		if ($delta[$i] >= $seuil_critique)
    pourquoi ne pas tenter avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     number_format($delta[$i] , 2, ',', ' ') = number_format($cpu2[$i] , 2, ',', ' ')  - number_format($cpu[$i] , 2, ',', ' ') ;
    <reve>Quand je serais grand je f'rais TOUT avec une seule ligne de commande</reve>

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/07/2008, 12h53
  2. Soustraction de float et perte de précision
    Par Gxouxou dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 25/06/2008, 15h08
  3. Réponses: 3
    Dernier message: 06/06/2008, 14h35
  4. Réponses: 3
    Dernier message: 01/08/2007, 12h49
  5. Réponses: 6
    Dernier message: 02/08/2006, 14h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo