2017-02-15 1 views
-1

Warum, wenn ich diesen Code in print-Anweisung drucken wird die Ausgabe nicht korrekt sein.Warum, wenn eine Dezimalzahl im System subtrahieren die Ausgabe nicht korrekt

System.out.println(3.15 - 3); 

der Ausgang ist:

0.1499999999999999 

Ich denke, die ausgegeben werden müssen.

0.15 
+2

Gleitkommaarithmetik ist nicht exakt. Es gibt eine Menge Literatur darüber. – Brick

+0

warum java macht das !! .. und gibt es eine Lösung dafür? –

+1

Es ist nicht "Java" tut es. Es sind grundlegende Wahrheiten über mathematische und endliche Präzisionsdarstellungen von reellen Zahlen, die in allen Sprachen üblich sind, die eine Gleitkommadarstellung haben. Fixpunkt hätte verwandte, aber unterschiedliche Probleme. Das Problem ist, dass es unendlich viele reelle Zahlen gibt und nur endlich viele genau auf 16 Bits dargestellt werden können. Suche nach "Gleitkommaarithmetik." – Brick

Antwort

-1

System.out.println ((float) (3.15 - 3.0)); // die Antwort ist 0.15

System.out.println (3.15f - 3); // die Antwort ist 0.1500001

System.out.println (3.15 - 3.0); // Die Antwort ist 0.1499999999999999

+0

danke für dich ♥ –

Verwandte Themen