Java 如何从整数中检索十进制值?
我试图根据用户输入计算平均值。现在我已经有了基本的工作,但我只得到整数作为结果。我想要像5.5这样的十进制数字 欢迎任何解释Java 如何从整数中检索十进制值?,java,android,integer,decimal,Java,Android,Integer,Decimal,我试图根据用户输入计算平均值。现在我已经有了基本的工作,但我只得到整数作为结果。我想要像5.5这样的十进制数字 欢迎任何解释 final TextView averageView = findViewById(R.id.averageView); final String averageText = getString(R.string.average); final Button calculateButton = findViewById(R.id.calculateAverageButto
final TextView averageView = findViewById(R.id.averageView);
final String averageText = getString(R.string.average);
final Button calculateButton = findViewById(R.id.calculateAverageButton);
calaculateButton.setOnClickListener(new View.onClickListener() {
@SupressLint("SetTextI18n")
public void onClick(View v) {
int grade[] = {Integer.parseInt(((EditText) findViewById(R.id.grade1)).getText().toString());
int weight[] = {Integer.parseInt(((EditText) findViewById(R.id.weight1)).getText().toString());
int weightTotal = weight[0];
int sum = grade[0] * weight[0]
int average = sum / weightTotal
averageView.setText(averageText + Integer.toString(average));
编辑:
我已经尝试了一个答案,并为我的问题找到了解决方案
final TextView averageView = findViewById(R.id.averageView);
final String averageText = getString(R.string.average);
final Button calculateButton = findViewById(R.id.calculateAverageButton);
calaculateButton.setOnClickListener(new View.onClickListener() {
@SupressLint("SetTextI18n")
public void onClick(View v) {
double grade[] = {Double.parseDouble(((EditText) findViewById(R.id.grade1)).getText().toString());
double weight[] = {Double.parseDouble(((EditText) findViewById(R.id.weight1)).getText().toString());
double weightTotal = weight[0];
double sum = grade[0] * weight[0]
double average = sum / weightTotal
averageView.setText(averageText + " " + Double.toString(average));
如果存在整数,则除法运算符/表示整数除法
在它的两面。如果一侧或两侧有一个浮点数,
那么它意味着浮点除法。整数除法的结果
始终是一个整数。整数除法确定一的次数
整数变成另一个整数。整数除法后的余数为
不管它有多大,它都会掉下来
将变量平均值的类型更改为float,并将总和或权重中的一个类型转换为float:
float average = (float)sum / weightTotal;
同时将
Integer.toString(average)
更改为Float.toString(average)
您得到的是整数,因为您只使用整数
这是正常的,如果您喜欢将平均值作为小数,则必须将其声明为Float
或Double
而不是int
请注意,即使使用这种强制转换(Float.parseFloat…),它也不会工作,因为变量平均值只能保存整数。好的,您可以这样做
final TextView averageView = findViewById(R.id.averageView);
final String averageText = getString(R.string.average);
final Button calculateButton = findViewById(R.id.calculateAverageButton);
calaculateButton.setOnClickListener(new View.onClickListener() {
@SupressLint("SetTextI18n")
public void onClick(View v) {
int grade = {Integer.parseInt(((EditText)
findViewById(R.id.grade1)).getText().toString());
int weight = {Integer.parseInt(((EditText)
findViewById(R.id.weight1)).getText().toString());
double sum = grade * weight
double average = sum / weight
averageView.setText(averageText +" "+ average);
您还应该使用try/catch,同时从edittext获取转换整数的数据。否则您可能会崩溃您的表达式似乎总是给出整数值。那么为什么需要显示为float呢?我想显示分数的平均值。通常显示为5.5、9.5、7.0。用户输入也可能是这样的。
float x = (float) y / z
text.setText("your avarage is : " + x );