我有問題給大家。int a =(int)((0.7 + 0.1)* 10)。爲什麼a = 7?
int a = (int) ((0.7 + 0.1) * 10)
該代碼的執行之後,= 7 我`噸明白爲什麼,這是因爲(0.7 + 0.1)= 0.8和0.8×10 = 8。 有人可以告訴我爲什麼嗎? 謝謝!
我有問題給大家。int a =(int)((0.7 + 0.1)* 10)。爲什麼a = 7?
int a = (int) ((0.7 + 0.1) * 10)
該代碼的執行之後,= 7 我`噸明白爲什麼,這是因爲(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
。乘以十和截斷,這給7
。
What Every Computer Scientist Should Know About Floating-Point Arithmetic是一個很好的閱讀主題。
它是浮點運算,它被取消了。
這裏發生的事情是,(0.1 + 0.7)是真的接近0.8,但是當你10你得到7.9999乘以......,當你地板,你拿到7這不是實際上 0.8,
Java中的小數部分int
s被截斷。你可以創建浮點變量x
和y
,或者只是將它們轉換爲浮點數並將它們轉換回來以獲得int作爲最終結果。
嘗試打印'0.7 + 0.1'的結果,你會得到你的答案。 – Vulcan
結果爲0.所有相同的我不明白爲什麼a = 7 –
@ user2535193你打印的是什麼?發佈負責打印的代碼。 – Maroun