2012-04-26 85 views
-1

我正在嘗試做一些基本的數學計算,它一直彈出爲0。我確信它與它是一個int但我不知道如何解決它。我需要使用整數,但數學到達這些整數使用小數。我該怎麼做?爲什麼int exp1 = 14/20 * 100;在Java中等於'0'?

+3

好傢伙,不會再次....整數除法這種方式工作的每一種語言。 – duffymo 2012-04-26 14:51:15

+0

@duffymo不是弱類型的語言;) – dtech 2012-04-26 14:53:33

+0

真的嗎?發佈JavaScript示例。我很肯定,當你劃分它們時,兩個整數將以這種方式起作用。 – duffymo 2012-04-26 14:54:45

回答

2

這對黑莓來說並不是特別的,它是標準的java行爲。

這是因爲你做的整數運算:

int subexpr1 = 14/20; // 0 
int subexpr2 = subexpr1 * 100; // 0 

使用雙,而不是或更改

int expr1 = (int) 14.0/20 * 100; // Very small possibility of rounding errors 
int expr2 = 14 * 100/20; // Will ignore fraction parts 
8

這是整數除法。

要獲得非整數結果,請改用double

1

您可以將其更改爲14 * 100/20 - 然後它會給你想要的。

I.e.改變操作順序(14/20是0)

-1

你的結果被強制轉換爲int順序,所以你正在失去精度。

嘗試

double exp1 = 14/20.0*100; 
+1

這將仍然無法正常工作,因爲'14/20'將會是0 – dtech 2012-04-26 14:52:56

+0

然後,我如何將double作爲int並將其舍入? – 2012-04-26 15:10:56

+0

即。 0.65 * 10 = 6.5但是作爲一個int來投射,所以它輪到7 – 2012-04-26 15:11:28

相關問題