Partage
  • Partager sur Facebook
  • Partager sur Twitter

Addition $variable PHP

float value addition probleme virgule flotante

Sujet résolu
    27 mai 2014 à 16:05:57

    Bonjour,

    Je souhaite additionner les valeurs d'un tableau. Sachant que les valeur du tableau sont des variables PHP (type $var).

    Quand je fait 

    $toto = $ligne1+$ligne2; // avec $ligne1 = 5200.38 et $ligne2 = 355.83
    echo $toto; // ça me donne 360
    
    

    J'avais une astuce en langage C avec la lettre f, mais là je trouve pas j'ai essayé avec la fonction float() mais ça ne m'affiche plus rien.

    Avez vous des suggestions svp ?

    -
    Edité par BlaST77 27 mai 2014 à 16:10:43

    • Partager sur Facebook
    • Partager sur Twitter
    Celui qui enseigne une science a la récompense de celui qui a oeuvré avec, sans que cela ne réduise en rien la récompense de celui qui a œuvré.
      27 mai 2014 à 16:19:50

      T'est sur que ta le bon code ? car

      $ligne1 = 5200.38;

      $ligne2 = 355.83;

      $toto = $ligne1+$ligne2; 

      echo $toto; 

      ca fait bien: 5556.21

      • Partager sur Facebook
      • Partager sur Twitter
        27 mai 2014 à 16:25:00

        Bah en vérité $ligne1 = 5200,38 que je formate au préalable avec un calcul de type 

        $ligne1=number_format($ma_valeur_a_arrondir, 2, ',', ' ');


        Je crois qu'il aime pas les virgules, il faudrait enlever les points et mettre les virgules

        -
        Edité par BlaST77 27 mai 2014 à 16:28:34

        • Partager sur Facebook
        • Partager sur Twitter
        Celui qui enseigne une science a la récompense de celui qui a oeuvré avec, sans que cela ne réduise en rien la récompense de celui qui a œuvré.
          27 mai 2014 à 16:28:25

          BlaST77 a écrit:

          Bah en vérité $ligne1 = 5200,38 que je formate au préalable avec un calcul de type 

          $ligne1=number_format($ma_valeur_a_arrondir, 2, ',', ' ');



          -
          Edité par BlaST77 il y a moins d'une minute

          Dans ce cas la pourquoi ne pas faire ton addition avant et ensuite tu formates ta variable non ?

          -
          Edité par kikilevrai 27 mai 2014 à 16:28:40

          • Partager sur Facebook
          • Partager sur Twitter
            27 mai 2014 à 16:28:28

            En PHP, le séparateur de décimal pour les type float c'est le point. La virgule est considéré comme une ponctuation de chaîne de caractère il me semble.

            Le nomber_format tu t'en servira pour le echo du résultat si tu veux ta virgule en séparateur.

            -
            Edité par Apooo 27 mai 2014 à 16:29:11

            • Partager sur Facebook
            • Partager sur Twitter
            while(100>1){ ... }; echo "End"; - Chuck Norris a déjà affiché "End".
              27 mai 2014 à 16:29:01

              Donc: $ligne1 = 5200.38;
              number_format($ligne1,2); 
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                27 mai 2014 à 16:35:02

                En php on a tendance à laisser de côter les types de variable.
                number_format() renvoie une string. Tu ajoutes 2 strings ensemble. Si PHP comprend la plupart du temps c'est qu'il est bien foutu, mais s'il comprend pas des fois faut pas lui en vouloir ;)

                • Partager sur Facebook
                • Partager sur Twitter
                  27 mai 2014 à 16:35:17

                  kikilevrai a écrit:

                  Dans ce cas la pourquoi ne pas faire ton addition avant et ensuite tu formates ta variable non ?

                  Je ne veux pas malheureusement

                  Eternia a écrit:

                  Donc: $ligne1 = 5200.38;

                  number_format($ligne1,2); 

                   Je ne peux pas faire 

                  $ligne1 = 5200.38

                  car 5200.38 est obtenu d'une façon bien plus compliqué et je veux simplement additionner des variables ayant de point au lieu de virgule

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Celui qui enseigne une science a la récompense de celui qui a oeuvré avec, sans que cela ne réduise en rien la récompense de celui qui a œuvré.
                  Anonyme
                    27 mai 2014 à 16:40:35

                    fait ceci:

                    $ligne1=floatval($ligne1);

                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 mai 2014 à 16:48:12

                      ça ne fonctionne pas !

                      Il me remet aussi 360

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Celui qui enseigne une science a la récompense de celui qui a oeuvré avec, sans que cela ne réduise en rien la récompense de celui qui a œuvré.
                        27 mai 2014 à 16:51:56

                        j'ai compris c'est bon 

                        $ligne1_avec_virgule = number_format($ligne1, 2, '.', '');

                        Faut juste changer le séparateur dans la fonction number()

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Celui qui enseigne une science a la récompense de celui qui a oeuvré avec, sans que cela ne réduise en rien la récompense de celui qui a œuvré.
                        Anonyme
                          27 mai 2014 à 16:53:12

                          Bon je viens de tester ça:

                          $ligne1 = "5200,38";
                          $ligne2 = "355,83";
                          $toto = $ligne1+$ligne2; 
                          echo $toto;

                           et ça marche. Même avec les virgules j'obtiens 5555, autrement dit PHP s'arrête à la virgule et prend quand même l'entier avant.

                          J'en déduis que tu as problème avant, et que ça n'a rien à voir avec l'addition. Donne un peu plus de code peut-être?
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            27 mai 2014 à 16:54:52

                            Ca y est j'ai pigé.

                            Change ceci:
                            $ligne1=number_format($ma_valeur_a_arrondir, 2, ',', ' ');
                            en ceci:
                            $ligne1=number_format($ma_valeur_a_arrondir, 2, ',');
                            Tu avais mis un séparateur des milliers.... 5 200,38 + 355,83 = 5 +355 = 360...

                            Ca n'empêche que ta logique n'est pas bonne et pas performante. Peu importe comment tu construit tes nombres, je ne comprends pas pourquoi tu utilises number_format.

                            EDIT:
                            Oups, un train de retard

                            -
                            Edité par Anonyme 27 mai 2014 à 16:56:51

                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 mai 2014 à 11:12:47

                              J'ai résolu le problème avec la fonction number_format()

                              Merci à vous ! :)

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Celui qui enseigne une science a la récompense de celui qui a oeuvré avec, sans que cela ne réduise en rien la récompense de celui qui a œuvré.
                                18 juillet 2019 à 11:31:39

                                $a = 5200.38;
                                $b = 355.83;
                                
                                $total = $a + $b;
                                
                                echo number_format($total,2,',','') . '<br>';
                                echo gettype($total);

                                Résultat :

                                5 556,21
                                double

                                -
                                Edité par MisterGratos 18 juillet 2019 à 11:32:36

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Addition $variable PHP

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown