Calcul en php utilisant des décimal.

khalid95800 Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   -  
khalid95800 Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

voila j'ai un petit souci auquel je ne trouve pas de solution. Je dois calculer le montant total de la tva sur une facture et les poduits se trouve dans ma bd. Le problem c'est que mes calculs sont faussé par le arondi au dixieme de php. et j'arrive pas à changer cet arondi. voici mon code, du moins la partie qui nous intéresse.

$com = $db->query('SELECT * FROM lignes_commandes WHERE id_commande_ligne_commande = '.$fac[0]->id_commande_facture); 
 $client = $db->query('SELECT * FROM clients WHERE id_client = '. $fac[0]->id_client_facture); 

 // $tva_produit = 0.0000; 
 // $prix_produit_commande = 0.0000; 
 // $quantite_produit_commande = 0.0000; 
 $tva = number_format(0.0000,4); 
 // echo $tva; 
 foreach($com as $enr){ 
  $tva_produit = number_format($enr->tva_produit,4); 
  $prix_produit_commande = number_format($enr->prix_produit_commande,4); 
  $quantite_produit_commande = number_format($enr->quantite_produit_commande,4); 
  $tva += number_format($tva_produit * $prix_produit_commande * $quantite_produit_commande,4); 
  var_dump($tva); 
 } 
 die();


et le vardump affiche ceci float(0.5) float(2.1) float(2.2) float(12.2)
A voir également:

4 réponses

GrifOli Messages postés 2111 Date d'inscription   Statut Membre Dernière intervention   591
 
Essaye cela:

$tva = round($tva_produit * $prix_produit_commande * $quantite_produit_commande,4);

$tva = number_format($tva,4)
0
khalid95800 Messages postés 53 Date d'inscription   Statut Membre Dernière intervention  
 
marche passs
0
GrifOli Messages postés 2111 Date d'inscription   Statut Membre Dernière intervention   591
 
Je ne comprends pas ton problème alors. Supposons qu'après ton calcul que la tva = 9.456789

avec seulement number_format($tva,4), tu obtiens 9.4567, d'où ton problème car le 7 n'est pas arrondi à 8, est-ce exacte?

Tu corriges cela en faisant au préalable round($tva,4) qui te permet d'arrondir la valeur de %tva à la 4e décimale. Tu obtiendras donc 9.4568
0
khalid95800 Messages postés 53 Date d'inscription   Statut Membre Dernière intervention  
 
nn c'est pas ça. enfaite par exemple la première fois que ma boucle foreach passe le calcul est ça: 5.5*0.1*1 et le resultat est 0.5.

or quand je fait en dur 5.5*0.1 php me retourne bien 5.5.

J'ai mis le number format justement pour essayer d'avoir plus de decimal mais rien n'y fait.
0