2017-02-15 6 views
-1

なぜこのコードをprintステートメントで印刷すると出力が正しくないのですか?なぜ、システム内の10進数を減算すると出力が正しくない

System.out.println(3.15 - 3); 

出力は次のようになります。私は、出力がなければなりません

0.1499999999999999 

と思います。

0.15 
+2

浮動小数点演算は正確ではありません。これに関する文学はたくさんあります。 – Brick

+0

なぜそれをやっているのjava! ..これにはどんな解決策もありますか? –

+1

「Java」ではありません。これは、浮動小数点表現を持つすべての言語で一般的な数学と実数の有限精度表現に関する基本的な真理です。固定小数点は、関連するが異なる問題を有する。問題は、無限の数の実数が存在し、厳密に多くのものだけが16ビットで正確に表現できることである。 「浮動小数点演算」を検索します。 – Brick

答えて

-1

System.out.println((float)(3.15 - 3.0)); //答えは0.15

System.out.println(3.15f - 3); //答えは0.1500001

System.out.println(3.15 - 3.0); //答えは0.1499999999999999

+0

あなたに感謝♥ –