2017-10-27 4 views
1

Wo würde ich die toFixed Methode in diesem Code hinzufügen, die einen Betrag berechnet, so dass ich die Dezimalstelle auf 18 Stellen steuern kann, und so bekomme ich keine falschen Berechnungen.Steuern der Dezimalausgabe in JavaScript

Gerade jetzt 100.000 sollte 51 zurückkehren, aber es kehrt zurück 51.00000000000004

< script type = "text/javascript" > 
 
    $(document).ready(function() { 
 
    var qty = $("#qty"); 
 
    qty.keyup(function() { 
 
     var total = isNaN(parseInt(qty.val() * $("#price").val())) ? 0 : (qty.val() * $("#price").val()) 
 
     $("#total").val(total); 
 
    }); 
 
    }); 
 
</script>

Antwort

1

Eine Möglichkeit ist hier richtig, bevor Sie den Wert gesetzt:

$("#total").val(total.toFixed(2)); 

Eine weitere Option ist hier nach der Mathematik:

(qty.val() * $("#price").val()).toFixed(2) 
+0

Danke dafür, ich brauche 18 Plätze, also habe ich 18 geändert, aber die genauen Werte kommen immer noch anders. Jetzt gibt 100.000 zurück 51.000000000000007105, gibt es eine Möglichkeit, die 18 Plätze zu halten, aber stellen Sie sicher, dass die genauen Zahlen zurückgegeben werden? –

+0

@DavidClabaugh Sie geraten in die Tatsache, dass Gleitkommazahlen Approximationen sind, und JavaScript-Zahlen nicht genau genug für so viele Dezimalstellen. Siehe: [Ist die Gleitkomma-Berechnung fehlerhaft?] (Https://stackoverflow.com/questions/588004/is-floating-point-math-broken) –

Verwandte Themen