2017-08-26 3 views
0

J'essaie de définir une valeur de sortie de 2 champs à 2 décimales.
J'ai essayé de le faire avec: .toFixed(2) mais cela n'a pas fonctionné pour moi. J'ai essayé de le faire:Javascript fin à 2 décimales ne fonctionne pas

calculate = function() { 
     var total = document.getElementById('totaal').value; 
     var btw = document.getElementById('percentage').value; 
     document.getElementById('btw').value = parseInt(total.toFixed(2)) * parseInt(btw.toFixed(2))/100; 
    } 

Si le champ se termine sur un certain nombre avec 2 décimales (par exemple: 3,45), il fonctionne correctement.
Mais si elle se termine par un 0, il ne montre pas le 0.

Je pense que ce soit shoudn't cette Mutch d'un accord, mais je suis juste essayer pour une demi-journée maintenant ...

Merci d'avance!

Répondre

2

Lorsque vous utilisez parseInt() vous obtenez alors les chiffres après les chiffres après la virgule supprimés, essayez de faire ceci:

document.getElementById('btw').value = (parseFloat(total) * parseFloat(btw)/100).toFixed(2); 

parseFloat convertit la chaîne (et il est nécessaire parce que les valeurs d'entrée sont chaîne) dans l'entrée à un flotteur , puis divisez par 100 et appelez .toFixed(2) sur le résultat.

1

Vous pouvez convertir une chaîne en nombre à l'aide d'un unary plus +.

document.getElementById('btw').value = (+total * +btw/100).toFixed(2); 

Si vous utilisez parseInt, vous précision lâche, que vous pouvez avoir.

0

Vous pouvez utiliser parseFloat pour atteindre cet

var total =65633; 
 
var btw = 12; 
 

 
console.log(parseFloat((total* btw)/100).toFixed(2))

0

vos problèmes est que vous utilisez toFixed() sur les chaînes et toFixed() ne fonctionne que sur les chiffres.

Vous pouvez cependant faire:

document.getElementById('btw').value = 
     (parseInt(total) * parseInt(btw)/100).toFixed(2) 

Cela prend les deux chiffres et fait tout le calcul. Il convertit ensuite une chaîne avec deux décimales arrière

Voir mon violon ici: https://jsfiddle.net/6vtrjmax/

0

Assurez-vous que vous appelez toFixed sur toute l'opération à savoir document.getElementById("btw").value = (parseInt(total) * parseInt(btw)/100).toFixed(2);

Essayez d'exécuter l'extrait ci-dessous:

calculate = function() { 
 
    var total = document.getElementById("total").value; 
 
    var btw = document.getElementById("percentage").value; 
 
    if (total && btw) { 
 
    document.getElementById("btw").value = 
 
     (parseInt(total) * parseInt(btw)/100).toFixed(2); 
 
    } 
 
};
<input onchange="calculate()" placeholder='total' type="decimal" id="total"> 
 
<input onchange="calculate()" placeholder='percentage' type="decimal" id="percentage"> 
 
<input type="decimal" placeholder='result' id="btw">