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

JavaScript Discussion :

calcul avec javascript


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 2
    Par défaut calcul avec javascript
    Bonjour
    Voila je développe des petites applications en PHP en essayant d'éviter le javascript car mes connaissances sont plus que limiter sur ce domaine, mais la j'ai pas le choix, je suis obligé d'insérer un script mais ne fonctionne pas a 100%, j'ai une erreur par moment sur le résultat et le nombre de chiffres après la virgule que je n'arrive pas a limiter a 2
    J'ai testé plusieurs scripts mais aucun succès, celui la est celui qui fonctionne le mieux pour mon besoin

    C'est pour un choix de paiement, une variable en PHP est récupérer via un POST, ensuite, il y a 3 champs a remplir pour le paiement cb, especes et cheque et une différence a payer ou rembourser

    exemple, la variable en PHP 594,65 ( montant a regler )
    Test 1 => champs cb 200 le champs différence indique 394.65 => OK
    Test 2 => champs especes 600 => reste -5.350000000000023 => Pas bon trop de chiffres apres la virgule

    2 eme exemple, probleme de resultat
    La variable en php 35.88
    champs espece 35.90 et le champs difference -0.01999999999999602 => Pas bon, il devrait mettre 0.02

    Voici le code

    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
    <script language="JavaScript" type="text/javascript">
    function calcul(formulaire) // script de calcul
        {
            var pu = formulaire.prix.value; 
            var cb = formulaire.cb.value;   
            var esp = formulaire.esp.value;   
            var ch = formulaire.ch.value;   
            var tot=pu-cb-esp-ch;
            formulaire.total.value = tot ;
            calculTotal();
        }
    function calculTotal(){
      total.somme.value = 0;
      for(var i=0;i<document.forms.length-1;i++){ 
        total.somme.value = parseFloat(total.somme.value) + parseFloat(document.forms[i ].total.value);
      }
    }
    </script>
    <form name="paiement">
    <input  name='prix' type='hidden' value='<?php echo $vente_montant; ?>' onclick='calcul(paiement)'>
    <table>
    <tr><td><img src="paye_cb.png"></td><td><img src="paye_espece.png"></td><td><img src="paye_cheque.jpg"></td><td>Reste</td></tr>
    <tr>
    <td><input type='text' name='cb' size='4'   onChange='calcul(paiement)'></td>
    <td><input type='text' name='esp' size='4'   onChange='calcul(paiement)'></td>
    <td><input type='text' name='ch' size='4'   onChange='calcul(paiement)'></td>
    <td><input type='text' size='4' name='total' ></td>
    </tr>
    </table>
    </form>
    Je n'arrive pas a trouver le soucis, si quelqu'un a 2 minutes pour y jeter un oeil

    Merci
    Didier

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Salut,
    c'est un problème lié à la représentation des nombres à virgule flottante. Tu aurais le même problème en PHP, et avec n'importe quel langage qui utilise la virgule flottante.

    Si tu as besoin d'une grande précision (et je pense que c'est le cas), fais tes calculs en PHP avec l'extension BCMath. Tu peux utiliser JavaScript pour donner à l'utilisateur un aperçu de ce qui sera fait, en ajoutant une note explicative pour lui indiquer que ce ne sont pas les vrais résultats.

    Il est possible de trouver des bibliothèques de calcul de précision pour JavaScript, mais ce n'est pas une bonne idée : faire les traitements côté client n'est jamais sûr.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Invité
    Invité(e)
    Par défaut
    salut,

    tu peux aussi :
    • limiter la saisie à deux chiffres après la virgule (tu as dit toi même que tu voulais que deux chiffres)... et multiplier par 100 la valeur de tes champs

      De fait, tu manipules des entiers, ca devrait mieux se comporter. et à la fin tu divises ton total par 100.
    • updater le résultat par requête ajax ou tu fais le calcul de simulation coté serveur.

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 2
    Par défaut
    Merci pour vos conseils, je vais essayer de voir ca

  5. #5
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    C'est très juste, j'avais oublié. La convention avec les sites marchands, c'est d'enregistrer les prix en unités basses (centimes).
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    petite fonction javascript (ici)
    ou juste :
    toFixed() qui , contrairement à ce que j'avais lu, ne tronque pas, mais arrondi bien ...
    12.05499 -> 12.05
    12.055 -> 12.05
    12.05501 -> 12.06
    Dernière modification par Invité ; 11/08/2011 à 10h00.

Discussions similaires

  1. Calcul tva avec JavaScript
    Par chexna dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/01/2017, 21h25
  2. Calcul de PGCD avec JavaScript
    Par vcxcoder dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/02/2010, 20h18
  3. Lien ASP avec javascript
    Par RATIER dans le forum ASP
    Réponses: 3
    Dernier message: 15/07/2004, 08h54
  4. Réponses: 4
    Dernier message: 27/04/2004, 14h45
  5. Réponses: 2
    Dernier message: 22/03/2004, 10h50

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