2016-11-04 10 views
0

Wenn man 5 von 8,8 subtrahiert, ist das tatsächliche Ergebnis: 3,8 aber in meinem Code gibt es 3.8000000007.
Warum das? Könnte jemand freundlicherweise einen wertvollen Einblick geben?

Vielen Dank im Voraus.Subtraktion Probleme in JavaScript

Antwort

1

es funktioniert:

var p = 8.8 - 5; 
 
console.log(p.toFixed(1));

+0

Sie es jetzt – Jigar7521

0

In der Abbildung unten ist Berechnungsteil gibt. Bitte überprüfen Sie es.

enter image description here

+0

'yMin = (yMin-Intervall) .toFixed (1) überprüfen;' – Poiz

0

Die Javascript-Engine wird nur versuchen, Ihnen zu helfen. Wenn es eine Gleitkommazahl unter den in Ihren Arithmetischen Operationen angegebenen Zahlen findet, analysiert es automatisch auch das Ergebnis zu einer Gleitkommazahl (mit der höchstmöglichen Genauigkeit).

Daher, um diese Eager, aber unaufgefordert Hilfe der Javascript Engine; Sie müssen manuell aufrufe: toFixed() auf dem resultierenden Wert wie folgt:

var p = 8.8 - 5; 
    console.log(p.toFixed(1)); //<== 3.8 

Alternativ Sie die Nummer Prototype erstrecken und Ihre einzigartige Funktionalität hinzufügen, wenn das ist, was Sie sich wünschen. Jedoch ist dies überhaupt nicht ratsam !!!

<script type="text/javascript"> 

     Number.prototype.precise = function(){ 
      return this.toFixed(1); 
     }; 

     Number.prototype.floatSubtract = function(num){ 
      return (this - num).toFixed(1); 
     }; 

     var p1 = (8.8 - 5).precise(); 
     var p2 = 8.8.floatSubtract(5); 

     console.log(p1); //< 3.8 
     console.log(p2); //< 3.8 
    </script> 
+0

Wie genau aufaddieren Wert erhalten, ohne .toFixed() zu verwenden. – Jaya

+0

@Jaya Wie Sie sehen können; ** Dies ist ein Javascript-internes Verhalten ... ein Mittel, Ihnen zu helfen **. Sie können jedoch dem Number Prototyp (** not Advised **) eine Methode hinzufügen, um dies für Sie zu tun. Die Post wurde jetzt aktualisiert, um auch diese Option wiederzugeben. – Poiz

0

Ich denke, es ist nichts falsch im Umgang mit "toFixed()". Warum suchen Sie eine Antwort, ohne sie zu benutzen?

Nervertheless Sie es die mathematische Art und Weise tun konnte:

var result = (8.8 * 10 - 5 * 10)/10; 
 
console.log(result);

0

Versuchen Sie dies. Ich denke, das wird die Lösung sein.

<!doctype HTML> 
 
<html> 
 
    <head> 
 
     <script> 
 
\t  num = 8.8 - 5; 
 
     console.log(Math.round(num * 100)/100) 
 
     </script> 
 
    </head> 
 
</html>