2012-04-04 7 views
0
Cursor ca2 = dbh1.getReadableDatabase().query(DatabaseHelper.TABLE_NAME, null, null,  null, null, null, null); 
int countTotal = ca2.getCount(); 
Cursor ca1 = dbh1.getReadableDatabase().query(DatabaseHelper.TABLE_NAME, null, DatabaseHelper.VALUE6 + "='Automatic'", null, null, null, null); 
int count = ca1.getCount(); 

int percentTrans = ((count/countTotal)*100); 
statText=(EditText)findViewById(R.id.etext3); 
statText.setText(Integer.toString(percentTrans)); 

Toast toast=Toast.makeText(this, Integer.toString(percentTrans), 2000); 
toast.show(); 

Здравствуйте, у меня есть глупая проблема. Я хочу процент, деля счетчик на countTotal и умножая его на 100. percentTrans является целым по своей природе, и это значение будет передано в текст редактирования, который требует, чтобы percentTrans был преобразован в строку. count равно 2 и countTotal равно 3. Но в результате получается 0. Есть идеи?Основная проблема расчета java

ответ

4

count/countTotal является int и (int)(2/3) является 0.

написать это, как (count*100/countTotal)

1

Integer математика не нравится с помощью калькулятора - сделать это вместо:

int percentTrans = Math.round(count * 100.0f/countTotal); 

это делает все вычисления, как числа с плавающей точкой (он делает это неявно, когда вы указываете ваш 100.0f будет float), а затем округляет его до соответствующего целочисленного значения в конце

+0

Math.round будет еще лучше. – kirilloid

1

jus выполните вычисление как показано в верхнем показанном ответе и поместите значение в текст редактирования следующим образом:

statText.setText(String.valueOf(percentTrans)); 
Смежные вопросы