正如您在代码中看到的那样,我可以用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);