Math.floor 关于数学计算

Math.floor on a math calculation

我已经进行了计算,取了小数点,但现在我想计算它以显示向下舍入的数字。 我发现我可以使用 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);
}

尝试以下方法

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()会将int转换为String,这样就可以设置为TextView.

需要改进的地方:
您可以按照以下准则改进您的代码:

  1. 您在多个地方使用同一行 etBarfles.getText().toString() 作为检查条件。最好用该值初始化一个变量。像

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

  2. 你的条件etBarfles.getText().toString().equals("")可以写成Android如下

    !TextUtils.isEmpty(etBarFilesText)

  3. 您的字符串应该在您的 strings.xml 中定义。因此,如果您的错误消息在 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)))); 如果您使用不同的变量,而不是将所有内容都写在一个大句子中,可能会更简单、更易读。