Как получить десятичное значение из целого числа? - PullRequest
0 голосов
/ 25 декабря 2018

Я пытаюсь вычислить среднее значение на основе пользовательского ввода.Теперь у меня работают основы, но в результате я получаю только целые числа.Я хочу десятичные числа, такие как 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));

Ответы [ 4 ]

0 голосов
/ 25 декабря 2018
float x = (float) y / z

text.setText("your avarage is : " + x );

также вы должны использовать try / catch при получении данных из edittext для конвертации Integer.в противном случае вы можете получить сбой

0 голосов
/ 25 декабря 2018

Вы получаете целые числа, потому что вы используете только целые числа.

Обратите внимание, что даже если вы используете такое приведение (Float.parseFloat ....), оно не будет работать, поскольку переменная средняя может содержать только целые числа.

0 голосов
/ 25 декабря 2018

ОК. Вы можете сделать это так

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);
0 голосов
/ 25 декабря 2018

Оператор деления / означает целочисленное деление, если с обеих сторон от него есть целое число.Если одна или две стороны имеют число с плавающей запятой, то это означает деление с плавающей запятой.Результатом целочисленного деления всегда является целое число.Целочисленное деление определяет, сколько раз одно целое переходит в другое.Остаток после целочисленного деления просто отбрасывается, независимо от его размера.

Измените тип среднего значения на float и введите один из суммы или веса для float:

float average = (float)sum / weightTotal;

Также измените Integer.toString(average) на Float.toString(average)

...