2017-03-26 1 views
0

Quelqu'un peut-il m'aider avec cela, j'essaie d'utiliser ce code sur un point de vente pour calculer le changement à donner à un client et cela fonctionne pour la partie doit.Calculer la modification à donner au client sur POS javascript

Le problème que je vais avoir est si je commande coûte £ 9.99 et j'entre £ 10, au lieu de calculer la variation de 0,01 £ il calcule comme £ 0,009999999999999787

Voici le code que je J'utilise.

function sum() { 
 
    var og_total = document.getElementById('og_cart_total').value; 
 
    var og_tendered = document.getElementById('og_cash_tendered').value; 
 
    var og_change = (og_tendered - og_total).toFixed(2); 
 
    var og_symbol = '£'; 
 
    if (!isNaN(og_change)) { 
 
     document.getElementById('og_change_given').value = og_symbol + og_change; 
 
    } 
 
}
<input type="hidden" id="og_cart_total" value="19.99" onkeyup="sum();" /> 
 

 
<div class="control-group"> 
 
<label class="control-label" for="og_cash_tendered">Tendered:</label> 
 
<div class="controls"> 
 
\t <input class="cm-autocomplete-off" type="text" name="payment_info[og_cash_tendered]" value="" id="og_cash_tendered" onkeyup="sum();" /> 
 
</div> 
 
</div> 
 

 
<div class="control-group"> 
 
<label class="control-label" for="og_change_given">Change:</label> 
 
<div class="controls"> 
 
\t <input type="text" name="payment_info[og_change_given]" id="og_change_given" value="£-19.99" readonly="readonly" /> 
 
</div> 
 
</div>

+0

En javascript tous les chiffres sont 'floats', voir (http://stackoverflow.com/questions/4703725/integers-in-javascript). Au fait, qu'est-ce qu'un POS? – Svaberg

+1

@Svaberg Je suppose que par POS, ils signifient "point de vente". –

+0

C'est correct. –

Répondre

0

il y a cette façon, mais ce n'est pas aussi prometteur comme il se doit. le meilleur moyen est d'utiliser une bibliothèque pour les nombres longs si cela en vaut la peine.

function sum() { 
 
      var og_total = document.getElementById('txt1').value; 
 
      var og_tendered = document.getElementById('txt2').value; 
 
      var og_change = (og_tendered - og_total).toFixed(2); 
 
      var og_symbol = "£"; 
 
      if (!isNaN(og_change)) { 
 
       document.getElementById('og_change_text').value = og_symbol + og_change; 
 
      } 
 
     }
<input type="text" id="txt1" value="9.99" readonly="readonly" onkeyup="sum();" /> 
 
<input type="text" id="txt2" onkeyup="sum();" /> 
 
<input type="text" readonly="readonly" id="og_change_text" />

+0

Merci, cela a fonctionné. –