Calcul en php utilisant des décimal.

Fermé
khalid95800 Messages postés 53 Date d'inscription vendredi 23 novembre 2012 Statut Membre Dernière intervention 19 février 2015 - Modifié par Chris 94 le 24/01/2013 à 18:53
khalid95800 Messages postés 53 Date d'inscription vendredi 23 novembre 2012 Statut Membre Dernière intervention 19 février 2015 - 24 janv. 2013 à 22:40
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 samedi 28 juin 2008 Statut Membre Dernière intervention 26 mars 2020 591
24 janv. 2013 à 18:58
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 vendredi 23 novembre 2012 Statut Membre Dernière intervention 19 février 2015
24 janv. 2013 à 20:43
marche passs
0
GrifOli Messages postés 2111 Date d'inscription samedi 28 juin 2008 Statut Membre Dernière intervention 26 mars 2020 591
Modifié par GrifOli le 24/01/2013 à 22:23
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 vendredi 23 novembre 2012 Statut Membre Dernière intervention 19 février 2015
24 janv. 2013 à 22:40
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