我正在为Android创建一个计算器,到目前为止它看起来已经完成了......事情是答案不准确,加法,减法,乘法工作正常,因为小数通常不需要..当它到来时除了舍入到最接近的整数而不是以十进制显示答案...所以我改变了TextView类型以显示小数,并使用float而不是int来表示包含答案的变量。结果是我最终得到一个圆形整数,结尾为“.00”: 请帮忙! 我的代码: MainActivity.java:
package in.rohanbojja.basiccalculator;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void add( View view){
EditText n1 = (EditText) findViewById(R.id.editText1);
EditText n2 = (EditText) findViewById(R.id.editText3);
TextView res = (TextView) findViewById(R.id.textView1);
String sn1 = n1.getText().toString();
String sn2 = n2.getText().toString();
String sres;
int in1 = Integer.parseInt(sn1);
int in2 = Integer.parseInt(sn2);
float ires;
ires = in1 + in2;
sres = Float.toString(ires);
res.setText(sres);
}
public void sub( View view ){
EditText n1 = (EditText) findViewById(R.id.editText1);
EditText n2 = (EditText) findViewById(R.id.editText3);
TextView res = (TextView) findViewById(R.id.textView1);
String sn1 = n1.getText().toString();
String sn2 = n2.getText().toString();
String sres;
int in1 = Integer.parseInt(sn1);
int in2 = Integer.parseInt(sn2);
float ires;
ires = in1 - in2;
sres = Float.toString(ires);
res.setText(sres);
}
public void mul( View view ){
EditText n1 = (EditText) findViewById(R.id.editText1);
EditText n2 = (EditText) findViewById(R.id.editText3);
TextView res = (TextView) findViewById(R.id.textView1);
String sn1 = n1.getText().toString();
String sn2 = n2.getText().toString();
String sres;
int in1 = Integer.parseInt(sn1);
int in2 = Integer.parseInt(sn2);
float ires;
ires = in1 * in2;
sres = Float.toString(ires);
res.setText(sres);
}
public void clr( View view ){
EditText n1 = (EditText) findViewById(R.id.editText1);
EditText n2 = (EditText) findViewById(R.id.editText3);
TextView res = (TextView) findViewById(R.id.textView1);
n1.setText("");
n2.setText("");
res.setText("Result");
}
public void div( View view){
EditText n1 = (EditText) findViewById(R.id.editText1);
EditText n2 = (EditText) findViewById(R.id.editText3);
TextView res = (TextView) findViewById(R.id.textView1);
String sn1 = n1.getText().toString();
String sn2 = n2.getText().toString();
String sres;
int in1 = Integer.parseInt(sn1);
int in2 = Integer.parseInt(sn2);
float ires;
ires = in1/in2;
sres = Float.toString(ires);
res.setText(sres);
}
}
答案 0 :(得分:6)
int in1 = Integer.parseInt(sn1);
int in2 = Integer.parseInt(sn2);
float ires;
ires = in1/in2;
你仍在进行整数除法,你只是将结果存储在浮点数中。要执行浮点除法,in1和in2必须是浮点数。
答案 1 :(得分:4)
我看到你试图通过将结果存储在float
来强制浮点结果,但不幸的是,这不会这样做。 Java中的运算符(例如除法运算符(/
))的工作方式如下:
int
。由于你的属于后一种情况,你会得到一个整数结果。解决方案是强制你的一个操作数成为一个浮点数,而不仅仅是结果变量,如下所示:
ires = ((float) in1) / in2;
答案 2 :(得分:0)
在div中:in1和in2是整数。您需要将sn1和sn2解析为Floats。
答案 3 :(得分:0)
你有一些小错误,你应该将in1
和in2
转换成浮点数,或类似的东西:
ires = (float)in1/in2;