2013-11-01 17 views
0

我使用這段代碼來計算一些東西,但幾乎在所有情況下結果都是0.0。爲什麼?編譯器中沒有警告或錯誤。爲什麼我在Java中的計算錯了?

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    try { 
     int potsum = Integer.valueOf(jTextField1.getText()); 
     int bla = Integer.valueOf(jTextField2.getText()); 
     float result = ((Integer.valueOf(bla)/Integer.valueOf(potsum)) * 100); 
     jLabel3.setText(Float.toString(result)); 
    } catch (NumberFormatException e) { 
     System.out.println("Error!"); 
    } 
} 
+3

因爲你在做整數除法。 – jmoerdyk

回答

0
float result = ((Integer.valueOf(bla)/Integer.valueOf(potsum)) * 100); 

正在執行整數除法,其中地板的值(1/2 => 0,2/3 => 0,3/3 => 1)。

考慮類型轉換或將分割的分子/分母作爲浮點值。

float result = Integer.valueOf(bla) * 100.0f/Integer.valueOf(potsum); 

float result = (float)Integer.valueOf(bla)/Integer.valueOf(potsum) * 100.0f; 

float result = Integer.valueOf(bla)/(float)Integer.valueOf(potsum) * 100.0f; 

我補充一點,我經常看到有人將劃分爲表達最後的算,主要是因爲這明確意圖和沒有按不要求人們理解操作順序+評估是如何從左到右的。

0

您需要轉換爲float,否則它看起來像Java的整數運算。

float result = bla * 100f/ potsum; 

注意正確的百分比計算。

1

這是因爲這是一個整數除法的整數。在分裂之前將他們兩個都拋出,並且你應該得到正確的結果。

0

float result = ((Float.valueOf(bla)/Float.valueOf(potsum)) * 100);

相關問題