私は誰にでも質問があります。私は理解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ため。 誰でも私にその理由を教えてもらえますか? ありがとう!
私は誰にでも質問があります。私は理解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ため。 誰でも私にその理由を教えてもらえますか? ありがとう!
問題が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は、主題に関する優れた読書です。
これは浮動小数点演算であり、フロアします。ここで何が起こっている
は(0.1 + 0.7)が近い0.8から本当にですが、あなたは7を得るあなたの床こと、とき、それは、...あなたは10を掛けたときに7.9999を取得し、実際に 0.8 ではないということです
Javaの小数部分int
は切り捨てられます。 x
とy
浮動小数点変数を作成するか、浮動小数点変数をfloatにキャストしてキャストし直して、最終結果としてintを得ることができます。
'0.7 + 0.1'の結果を印刷してみてください。あなたの答えがあります。 – Vulcan
結果は0です。なぜなら、私はなぜa = 7であるのか分かりません。 –
@ user2535193どうやって印刷していますか?印刷を担当するコードを投稿してください。 – Maroun