正如您在代码中看到的那样,我可以用Math.floor判断变量的值是Decimal还是Integer(如果有更简单的方法,请告诉我)。
如果我加总10 + 10,它给我20.0。我想要的是,如果我的总和是整数,我不想显示小数点“ .0”,但是如果我是十进制,我想显示它们(就像我在我的代码中显示的那样)

    public void OnButtonClick(View ver) {

        //Atribuir as caixas de texto a varariavel
        EditText et1 = findViewById(R.id.et1);
        EditText et2 = findViewById(R.id.et2);
        TextView tv1 = findViewById(R.id.tv1);

        float input1;
        float input2;
        //Atribui o conteudo das ET para as variaveis e faz/apresenta a soma
        try {
            input1 = Float.parseFloat(et1.getText().toString());
            input2 = Float.parseFloat(et2.getText().toString());
            float sum = input1 + input2;

            if (sum >  Math.floor(sum)){
                //set text of tv1 with decimals here
                Toast.makeText(getApplicationContext(), "Decimal", Toast.LENGTH_SHORT).show();
            }
            else{
                //set text of tv1 with only integers here
                Toast.makeText(getApplicationContext(), "Integer", Toast.LENGTH_SHORT).show();
            }

            tv1.setText(String.valueOf(sum));

        }
        catch(NumberFormatException ex) {
            //Se estiver vazio msg de erro
            Toast.makeText(getApplicationContext(), "Preencha os campos", Toast.LENGTH_SHORT).show();

        }

    }
}

最佳答案

问题是您正在调用String.valueOf(float),它将返回带点的数字。尝试这个:

 input1 = Float.parseFloat(et1.getText().toString());
 input2 = Float.parseFloat(et2.getText().toString());
 float sum = input1 + input2;
 String output;

 if (sum >  Math.floor(sum)){
     Toast.makeText(getApplicationContext(), "Decimal", Toast.LENGTH_SHORT).show();
     output = String.valueOf(sum); // pass it as a float
 }
 else{
     Toast.makeText(getApplicationContext(), "Integer", Toast.LENGTH_SHORT).show();
     output = String.valueOf((int) sum); // casts sum to int, removing the ".0"
 }

 tv1.setText(output);

10-07 19:27
查看更多