Показать очень большие двойные значения на EditText - PullRequest
3 голосов
/ 29 декабря 2011

Прежде всего, пожалуйста, извините за мой плохой английский.

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

Проблема:

У меня очень большое двойное значение, как 12345678987654321 в моем приложении для Android но когда я хочу показать его на EditText, он будет показан так 12345678987654300. В этом случае, когда мои значения символов превышают 15 символов , Android отображает оставшиеся символы с "0"

Я не знаю, что мне нужно делать.

Я использую этот код:

DecimalFormat df = new DecimalFormat("#.#########");
double a = Distancevals[1] * Distancevals[2];
//Distancevals is an array of double with big values
EditText editto = (EditText)findViewById(...);
editto.setText(df.format(a));

Ответы [ 4 ]

1 голос
/ 29 декабря 2011

Double сохраняет ваш номер 12345678987654321 в формате 1.23456789876543E16, поэтому вы теряете конец номера 21. Когда вы форматируете результат, известно, что ваш номер состоит из 17 знаков, поэтому функция format добавляет два нуля в конце вашего номера вместо 21.

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

DecimalFormat df = new DecimalFormat("#.#########");
BigDecimal a = new BigDecimal(Distancevals[1] * Distancevals[2]);
// Distancevals is an array of double with big values
EditText editto = (EditText) findViewById(...);
editto.setText(df.format(a));
0 голосов
/ 05 ноября 2016

Предлагаю в строке:

editto.setText(df.format(a));

Измените его на:

editto.setText(df.format(a.toString()));
0 голосов
/ 29 декабря 2011

Вы просто показываете это как editto.setText(a+"");

Причина в вашем случае EditText ничего не делает, но DecimalFormat меняет ваш номер.

0 голосов
/ 29 декабря 2011

Попробуйте это

DecimalFormat df= new DecimalFormat("###############00");
double a=Distancevals[1]*Distancevals[2];
//Distancevals is an array of double with big values
EditText editto=(EditText)findViewById(...);
editto.setText(df.format(a));
...