2016-02-15 3 views
-1

J'ai fait un calcul, pris des décimales mais maintenant je voudrais faire en sorte qu'il montre un nombre arrondi. J'ai trouvé que je peux utiliser math.floor mais je ne peux pas l'obtenir dans le code. J'ai enlevé les décimales mais je n'arrive pas à l'arrondir.Math.floor sur un calcul mathématique

Code

est comme ça (la partie qui fait le calcul):

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); 
} 

Répondre

1

Effectuez les opérations suivantes

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() vous permet de convertir la valeur à une valeur plancher entier, puis String.valueOf() convertira que int à String, de sorte que vous pouvez définir la même chose pour le TextView.

choses à améliorer:
Vous pouvez rendre votre code mieux en suivant ces directives:

  1. Vous utilisez la même ligne etBarfles.getText().toString() à plusieurs endroits pour vos conditions de contrôle. C'est mieux si vous initialisez une variable avec cette valeur. Quelque chose comme

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

  2. Votre état etBarfles.getText().toString().equals("") peut écrire la façon Android comme suit

    !TextUtils.isEmpty(etBarFilesText)

  3. Vos chaînes doivent être définis dans votre strings.xml. Donc, si votre erreur msgd est nommée error_string dans le strings.xml alors votre message Toast ressemblera à ceci.

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

  4. Votre ligne

    tvResult.setText(nodecimals((((Float.parseFloat(etBarfles.getText().toString()) * (Float.parseFloat(etInhoudfles.getText().toString()))/(Float.parseFloat (etLitersperminuut.getText().toString())))/60)))); aurait pu être plus simple wayy et plus lisible si vous avez utilisé des variables différentes, au lieu d'écrire tout dans une grande phrase.

+0

Vérifiez ma réponse mise à jour pour les choses que vous pouvez améliorer dans votre code. – Antrromet

+1

J'apprends, c'est pourquoi je pose des questions, cela m'aide beaucoup !! –