我的代码有问题。我将复制简化的代码,包括两个editext和一个textview和按钮。使用这段代码,如果editext1中的值是"100",而其他editext2中的值为"60",我得到的结果答案是"40.0",应该是"40"。感谢
对于代码:
public class MainActivity extends AppCompatActivity {
EditText number1;
EditText number2;
Button Add_button3;
TextView descr;
int ans=0;
private BreakIterator view;
@SuppressLint("CutPasteId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//
number1=(EditText) findViewById(R.id.editText_first_no);
number2=(EditText) findViewById(R.id.editText_second_no);
Add_button3=(Button) findViewById(R.id.add_button3);
descr = (TextView) findViewById(R.id.textView_DESC);
//
Add_button3.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
double num1 = Double.parseDouble(number1.getText().toString());
double num2 = Double.parseDouble(number2.getText().toString());
double sump = num1 - num2;
descr.setText(Double.toString(sump));
}
});
}
}
有两个选项,强制转换和使用Math类。
铸造:descr.setText(Integer.toString((int)sump));
这种方法只有一个缺点,你正在失去信息。
因此,如果您抽象double sump = 5.0 - 3.3;
,它等于:1.7000000000000002,则铸造会给您"1"。
在我看来,更好的方法是使用Math类,特别是方法random((,即:
descr.setText(Math.round(sump));
该方法也会删除一些数据,但它会将数字四舍五入到最接近的整数(整数(,这是处理类似情况的首选方法。
有关更多信息,请查看:如何使用Java 将float转换为int
像这样使用DecimalFormat
:
在Kotlin
DecimalFormat("##.##").format(yourValue)
在Java中:
new DecimalFormat("##.##").format(yourValue);