【问题标题】:How to retrieve decimal value from Integer?如何从整数中检索十进制值?
【发布时间】:2018-12-25 10:37:12
【问题描述】:

我正在尝试根据用户输入计算平均值。现在我已经掌握了基础知识,但我只得到整数作为结果。我想要像 5.5 这样的十进制数

欢迎任何解释!

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));

【问题讨论】:

  • 您的表达式似乎总是给出整数值。那么为什么需要显示为浮动呢?
  • 我想显示平均成绩。通常显示为 5.5、9.5、7.0。而且用户输入也很可能是这样的。

标签: java android integer decimal


【解决方案1】:

好的,你可以这样做

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);

【讨论】:

    【解决方案2】:

    除法运算符/表示整数除法,如果有整数 在它的两侧。如果一侧或两侧有浮点数, 那么它意味着浮点除法。整数除法的结果 始终是整数。整数除法决定一的多少次 整数进入另一个。整数除法后的余数是 简单地掉下来,不管它有多大。

    将变量平均值的类型更改为浮点数并将总和或权重之一转换为浮点数:

    float average = (float)sum / weightTotal;
    

    还将Integer.toString(average) 更改为Float.toString(average)

    【讨论】:

      【解决方案3】:

      你得到整数是因为你只使用整数!!。

      这很正常,如果您喜欢十进制的平均值,则必须将其声明为 FloatDouble 而不是 int

      请注意,即使您使用这种转换 (Float.parseFloat....),它也不会起作用,因为变量 average 只能保存整数。

      【讨论】:

        【解决方案4】:
        float x = (float) y / z
        
        text.setText("your avarage is : " + x );
        

        你也应该使用 try/catch 从 edittext 获取数据来转换 Integer。否则你会崩溃

        【讨论】:

          猜你喜欢
          • 2011-07-12
          • 1970-01-01
          • 2019-02-16
          • 1970-01-01
          • 2021-09-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-28
          相关资源
          最近更新 更多