Округлить до 2 знаков после запятой и пройти через TextView

хочу сделать общее приложение для разделения, просто чтобы проверить кое-что, потому что я еще новичок во всем. Я получаю окончательное число, я просто не знаю, как и где применить NumberFormat или DecimalFormat или как правильно Math.Round, поэтому в результате я получаю только 2 десятичных знака. Я хочу выплюнуть любое число, разделенное обратно в текстовое представление.

final Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            thing1 = (EditText) findViewById(R.id.thing1);
            if (TextUtils.isEmpty(thing1.getText().toString())) {
                n1 = 0;}
            else {
                n1 = Integer.parseInt(thing1.getText().toString());
            }

            thing2 = (EditText) findViewById(R.id.thing2);
            if (TextUtils.isEmpty(thing2.getText().toString())) {
                n2 = 0;}
            else {
                n2 = Integer.parseInt(thing2.getText().toString());
            }

            if (n2 !=0){

             total = (n1 / n2);}

            final double total =  ((double)n1/(double)n2);

            final TextView result= (TextView) findViewById(R.id.result);

            result.setText(Double.toString(total));

        }

    });


}

person pjhollow    schedule 09.04.2015    source источник
comment
попробуйте использовать класс BigDecimal   -  person Scary Wombat    schedule 09.04.2015
comment
Возможно, это поможет. stackoverflow.com/questions/153724/   -  person brainfreak    schedule 09.04.2015


Ответы (4)


Попробуйте использовать метод String.format(), он создаст строку с округлением этого числа (в большую или меньшую сторону) до двух знаков после запятой.

String foo = String.format("%.2f", total);
result.setText(foo);
person zxgear    schedule 09.04.2015

Попробуйте использовать этот код:

DecimalFormat df = new DecimalFormat();
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setGroupingSeparator(',');
dfs.setDecimalSeparator('.');
df.setDecimalFormatSymbols(dfs);
df.setMinimumFractionDigits(2);
df.setMaximumFractionDigits(2);
result.setText(df.format(n1 / n2));

Надеюсь, это работа. Спасибо

person Trang    schedule 09.04.2015

вы можете использовать String.format()

result.setText(String.format("%.2f", total));

OR

использовать Math.round()

Math.round(total*100.0)/100.0

как это:

result.setText(Double.toString(Math.round(total*100.0)/100.0));
person Dyrandz Famador    schedule 09.04.2015

Вы должны попробовать это

result.setText(String.format( "%.2f", total) );
person Meenakshi Mishra    schedule 09.04.2015