2013-06-29 15 views
8

私は誰にでも質問があります。私は理解can`t = 7 このコードの実行後int a =(int)((0.7 + 0.1)* 10)。なぜa = 7ですか?

int a = (int) ((0.7 + 0.1) * 10) 

、なぜ、(0.7 + 0.1)= 0.8と0.8×10 = 8ため。 誰でも私にその理由を教えてもらえますか? ありがとう!

+7

'0.7 + 0.1'の結果を印刷してみてください。あなたの答えがあります。 – Vulcan

+0

結果は0です。なぜなら、私はなぜa = 7であるのか分かりません。 –

+0

@ user2535193どうやって印刷していますか?印刷を担当するコードを投稿してください。 – Maroun

答えて

24

問題が0.1や0.7いずれもdoubleとして正確に表現することができることである。

  • 0.1はほぼ0.10000000000000000555表されます。

  • 0.7は、約0.69999999999999995559と表されます。

合計は約0.79999999999999993339です。 10を掛けて切り捨てると、7となります。

What Every Computer Scientist Should Know About Floating-Point Arithmeticは、主題に関する優れた読書です。

5

これは浮動小数点演算であり、フロアします。ここで何が起こっている

は(0.1 + 0.7)が近い0.8から本当にですが、あなたは7を得るあなたの床こと、とき、それは、...あなたは10を掛けたときに7.9999を取得し、実際に 0.8 ではないということです

3

Javaの小数部分intは切り捨てられます。 xy浮動小数点変数を作成するか、浮動小数点変数をfloatにキャストしてキャストし直して、最終結果としてintを得ることができます。

関連する問題