2016-02-15 116 views
-1

我已經做了一個計算,取了小數,但現在我想讓它顯示一個下舍入的數字。 我發現我可以使用math.floor,但是我無法在代碼中找到它。 我取下了小數點,但無法將其捨去。Math.floor在數學計算

碼是這樣的(這確實數學的部分):

public void onClick(View view) { 
    if (etBarfles.getText().toString().equals("")) { 
     Toast.makeText(getActivity(), "Vul zowel bar in fles, inhoud fles als liters per " + 
       "minuut in!", Toast.LENGTH_SHORT).show(); 
    } else { 
     if (etInhoudfles.getText().toString().equals("")) { 
      Toast.makeText(getActivity(), "Vul zowel bar in fles, inhoud fles als liters per " + 
        "minuut in!", Toast.LENGTH_SHORT).show(); 
     } else { 
      if (etLitersperminuut.getText().toString().equals("")) { 
       Toast.makeText(getActivity(), "Vul zowel bar in fles, inhoud fles als liters " + 
         "per minuut in!", Toast.LENGTH_SHORT).show(); 
      } else { 
      } 
      tvResult.setText(nodecimals((((Float.parseFloat(etBarfles.getText().toString()) * 
        (Float.parseFloat(etInhoudfles.getText().toString()))/(Float.parseFloat 
        (etLitersperminuut.getText().toString())))/60)))); 
     } 
    } 
} 

private String nodecimals(float val) { 
    return String.format("%.0f", val); 
} 

回答

1

嘗試使用以下

tvResult.setText(String.valueOf((int) Math.floor(((Float.parseFloat(etBarfles.getText() 
       .toString()) * 
       (Float.parseFloat(etInhoudfles.getText().toString()))/(Float.parseFloat 
       (etLitersperminuut.getText().toString())))/60)))); 

(int) Math.floor()將所述值轉換爲整數地板值,然後String.valueOf(),將轉換即intString,以便您可以將其設置爲TextView

事情,以改善:
你可以讓你的代碼更好地遵循這些原則:

  1. 您正在使用同一條線路etBarfles.getText().toString()在多個地方爲你檢查的條件。如果使用該值初始化一個變量,那麼最好。像

    String etBarFilesText = etBarfles.getText().toString();

  2. 你的條件etBarfles.getText().toString().equals("")東西可以如下

    !TextUtils.isEmpty(etBarFilesText)

  3. 你的字符串應該在strings.xml定義要寫入的Android方式。因此,如果您的錯誤msgd在strings.xml中被命名爲error_string,那麼您的Toast消息將看起來像這樣。

    Toast.makeText(getActivity(), getString(R.string.error_string), Toast.LENGTH_SHORT).show();

  4. 你行

    tvResult.setText(nodecimals((((Float.parseFloat(etBarfles.getText().toString()) * (Float.parseFloat(etInhoudfles.getText().toString()))/(Float.parseFloat (etLitersperminuut.getText().toString())))/60)))); 本來wayy簡單,如果你使用了不同的變量更具有可讀性,而不是在一個大單句寫的一切。

+0

檢查我的更新的答案,您可以在代碼中改進的東西。 – Antrromet

+1

我在學習,這就是爲什麼我問問題,這對我有很大的幫助! –