Десятичные знаки с использованием double с toString, android - PullRequest
1 голос
/ 06 августа 2011

Я создаю простую программу, которая выполняет простые математические функции над значениями, которые пользователь вводит в представлениях EditText. Первые два представления EditText содержат целые числа, а последнее может быть десятичным, поэтому ответ также должен быть в десятичной форме, поэтому я задаю двойное значение и (vis), но как я могу ограничить десятичные разряды четырьмя? Все работает нормально, ответ только много знаков после запятой!

Вот мой код:

public void onClick(View v) {
            String a,b,t;
            double vis;

            EditText txtbox1 = (EditText)findViewById(R.id.A);
                EditText txtbox2 = (EditText)findViewById(R.id.B);
                EditText txtbox3 = (EditText)findViewById(R.id.t);
                TextView tv = (TextView) findViewById(R.id.Answer);

            a = txtbox1.getText().toString();
            b = txtbox2.getText().toString();
            t = txtbox3.getText().toString();

            vis = ((Integer.parseInt(a)*1) + (Integer.parseInt(b)*2)) /       (Double.parseDouble(t));
            tv.setText(double.toString(vis));       
    }
}

Большое спасибо!

Ответы [ 3 ]

12 голосов
/ 06 августа 2011

Вы можете использовать String.format(), чтобы убедиться, что вы получите только 4 десятичных знака в выходных данных.Просто замените последнюю строку на tv.setText(String.format("%.4f", vis));.

См. http://download.oracle.com/javase/tutorial/java/data/numberformat.html для более подробной информации о том, как использовать String.format() для этой цели.

2 голосов
/ 24 сентября 2012

Я думаю, что уже слишком поздно, чтобы ответить, но это может помочь в будущем.

Если у нас есть число double и нам нужно получить 4 десятичных значения, мы можем умножить double на 10000 и приведите значение double в integer, затем снова вернитесь в double и разделите цифру на 10000.

1 голос
/ 07 августа 2011

Для большего контроля используйте BigDecimal.round(). Вы можете установить MathContext с требуемым правилом точности и округления (.5 - округление вверх, против .5 - округление вниз и т. Д.).

double vis = 21.23456;

tv.setText(new BigDecimal(vis).round(new MathContext(6, RoundingMode.HALF_UP)).toString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...