回答
(4/5)
是0,因爲它們是整數值並且0,8的結果四捨五入爲0.執行(4f/5F)
。現在結果會像預期的那樣。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html這是一個有用的鏈接給你。
因爲您正在使用整數,而不是浮動。 4/5
是0.8
,但整數不能存儲該數字,因此它被舍入到0
。然後等式的其餘部分將數字乘以零,這將始終導致0
。
轉動號寫入3.0
,4.0
,5.0
,6.0
打開方程成基於浮動的一個。
用整數:
3 * (4/5) * 6 = 0
花車:
3.0 * (4.0/5.0) * 6.0 = 14.4
記住BODMAS規則
第一個操作將是divide
意味着4/5
進行評估,並給出了0
(因爲4和5是我ntegers和它給0)和任何乘以0
給出0
它的一個簡單BODMAS
表達式評估
評價(3 *(4/5)* 6)將是;
1. (4/5)=0
2. 3*0=0
3. 0*6=0
爲了避免0的回答,您可以modifiy表達
1. (3 * (4.0/5.0) * 6) // return float value
2. (3*4*6)/5 //return integer value
3. (3 * (4/ 5.0) * 6) // return float value
在這種情況下,答案將是非零這種表達
或保持爲整數do(3 * 4 * 6)/ 5 - 將保持儘可能高的精度,而不必使用浮點數或雙精度。 –
@Tim B..yup true。!! –
的「問題」這個詞:
(4/5)
因爲兩個數字都是int
,結果將是int
。在整數算術java 截斷小數部分(它不輪),所以結果將爲零(0.8
將成爲0
)。
您使用整數除法(因爲和是都詮釋):
4/5 == 0 // 4/5 = 0 with remainder equals to 4: 0 * 5 + 4 == 4
這就是爲什麼整個公式
3 * (4/5) * 6 == 0
如果你想4/5視爲浮莆INT除法,因此它具有的0.8因此,你應該使用浮點數還有:4.0和5.0
System.out.println(3 * (4.0/5.0) * 6); // <- 14.4
附:這不僅對Java的典型行爲,但對於C,C++,C#以及
因爲你的情況4/5 = 0 < <它是整數除法
爲了解決這個問題,你可以重寫你的代碼如下\
System.out.println(3 * (4 /
5.0) * 6);
而結果將是
14.400000000000002
- 1. 爲什麼輸出爲0?
- 2. 爲什麼這個程序輸出1?
- 3. 爲什麼這個程序輸出8?
- 4. C#整數這是什麼輸出?
- 5. 爲什麼我得到這個輸出(整數和雙歧義)?
- 6. 爲什麼這個整數除法產量爲0?
- 7. 爲什麼這個輸出比較args [0]和字符串?
- 8. 爲什麼用這種方式輸出這段代碼?
- 9. 爲什麼這個C程序輸出一個負數?
- 10. 爲什麼這個遞歸程序給我這個輸出?
- 11. 爲什麼這個函數返回0
- 12. 爲什麼我的程序輸出中gr計數爲0?
- 13. 這兩個程序的輸出有什麼區別,爲什麼?
- 14. 什麼輸出類型這個方法?
- 15. 爲什麼這是程序的輸出?
- 16. 爲什麼trunc(1)輸出爲0?
- 17. 爲什麼這是輸出?
- 18. 這個程序爲什麼不輸出任何數據?
- 19. 這個程序爲什麼打印出「4 2 1 0」?
- 20. 這個程序的輸出是什麼?
- 21. 這個程序的輸出是什麼?
- 22. 爲什麼echo $ -1輸出這個?
- 23. 這個輸出爲什麼會發生?
- 24. 爲什麼vfork產生這個輸出?
- 25. 爲什麼for循環輸出這個?
- 26. 爲什麼這個C程序輸出是這樣的?
- 27. WebKit/Phantomjs爲什麼getComputedStyles的輸出是這種方式?
- 28. 爲什麼這個javascript數組打印出0?
- 29. 爲什麼這個程序沒有給出預期的輸出?
- 30. Java繼承:爲什麼這個程序給出了0.0輸出
整數除法。 –
Java中的4/5 = 0 –
您可以將其更改爲Double並獲取小數位數,否則4/5 = 0.8對於Java中的Integer舍入爲0。親自嘗試一下。的System.out.println(4 \ 5); – RossC