J'essaie de créer une calculatrice simple qui renverra le montant de la taxe de vente plus le montant après taxe. Si j'entre 80 $ et que la taxe de vente est de 7,5%, je devrais récupérer un montant de 86 $, mais au lieu de cela, je reçois 806 $. Je ne sais pas pourquoi.
//calculation
var total = (itemCost + (itemCost * salesTax/100));
total = Math.round(total)
3 Réponses :
vous avez besoin de var total = (parseInt (itemCost) + (parseInt (itemCost) * salesTax / 100));
Que fait parseInt?
La fonction parseInt () analyse une chaîne et renvoie un entier, comme le montre la Fonction JavaScript parseInt () < / a>. Vous devez convertir la chaîne en entier avant d'effectuer le calcul.
Lorsque vous obtenez les valeurs des champs de texte, vous avez des chaînes. Javascript fait beaucoup d'inférence de type, c'est pourquoi cela fonctionne presque. Votre expression est traduite en:
(Chaîne) "80" + ((Chaîne) "80" * (entier) 0,075)
(Chaîne) "80" + (entier) 6
Et maintenant, l'opérateur String + (String, Any) est appelé, qui est défini comme une concaténation de chaînes. Par conséquent, vous vous retrouvez avec "80" + "6" => "806".
Si vous écrivez par exemple: "80" * "1" + "80" * "7.5" / "100" vous obtiendriez en effet le résultat attendu de 86.
Mais pour être sûr que tout fonctionne comme prévu, vous devez en effet analyser les valeurs d'une valeur de chaîne à une valeur numérique (avec parseInt resp. parseFloat).
Le fait est que lorsque vous récupérez la valeur, c'est une chaîne. Analysez-le comme une valeur numérique en faisant:
var salesTax = Number(document.getElementById("salesTax").value);
itemCostetsalesTaxsont des chaînes.