2017-08-03 63 views
1

我有兩個變量:怎麼辦關於鑄造翻一番和int

double d1 = 15.20; 
int i1 = 10; 

我要除以100 I1,所以我可以得到0.1,然後我想在D1補充。

這裏是我試過

i1 = i1/100 result is 0

i1 = (int) ((double)i1/100); result is 0

我試着一對夫婦這樣的事情,但無論是我得到的結果0或2

任何人的事請告訴我如何使用wrt double和int來執行操作。我在Java中很新

+2

你知道int變量只能包含整數值嗎? – Eran

+0

如果您立即將結果賦值回int,那麼鑄造它並不好:/ –

+1

您認爲'0.1'的int值會是什麼? –

回答

5
i1 = (int) ((double)i1/100); 

由於i1integer,不管什麼它轉換右側/回合結果爲整數。因此,你的結果0.1轉換回0

將其存儲在double中以保留double結果。

double result = ((double)i1/100); 

甚至更​​好,轉換任何操作數以double告訴結果應該是一個double,這樣就可以完全避免鑄造。

double result = i1/100.0; 
+0

謝謝你的工作。一個簡單的問題,你爲什麼要專注於避免鑄造。是否有鑄造傷害。我的意思是操作上的觀點 – David

+2

@David這樣做沒有什麼壞處,但你可以明顯不需要它,因爲語言已經給你一個簡單的選擇。你可以做到這一點,如果你必須。 –

+0

是的,我同意。謝謝你的幫助。 – David

1

記得整數除以產生一個整數太... 如果你想避免再鑄造這將是確定申報100 100.0(字面雙),該操作將推動可變I1成一張雙人牀和結果會產生一個雙太... i1/100.0;

剩下的就是類似於其他答案

double d1 = 15.20; 
int i1 = 10; 

d1 += i1/100.0; 
System.out.println(d1); 
+0

謝謝。我也試過這個。完美工作 – David

1

INT/INT結果在一個int。如果你混合類型,那麼你有一個dobule。

所以,例如,只是除以兩倍。無需公式複雜:

double result = d1 + i1/100.0; 
1

你應該對不同的數據類型閱讀教程以及它們是如何相互關聯,再加上一般鑄造(這可真令人困惑,當你剛剛起步,但你會很快學會;))。

您的具體問題可以通過改變I1類型來解決,以爲整數只能包含整數。

那麼接下來,如果你這樣做:

double d1 = 15.2; 
double i1 = 10.; 

// short version 
d1 += i1/100; // a += b is short for a = a + b 
System.out.println(d1); //will print "15.3" 

// extensive version 
i1 = i1/100; // assigns the value 0.1 ti i1 
d1 = d1 + i1; 
System.out.println(d1); //will also print "15.3" 

有在互聯網上有關這個主題的負載和偉大的教程的負載,可以考慮挑選一些出來,並開始learnng。;)

乾杯