Показывать нормальное число вместо экспоненциальной формы - PullRequest
2 голосов
/ 04 апреля 2011

Я хочу показать число в нормальной форме вместо экспоненциальной формы

Например, мой номер хранится в двойной переменной со значением 1234567890123

Я хочу получить точное представление. но когда я передаю его в какой-то TextView для отображения, он становится 1.234E12

Ответы [ 2 ]

3 голосов
/ 10 июля 2013

Попробуйте использовать большой десятичный класс в java.

Большой десятичный класс обладает преимуществом некоторой встроенной функции округления, которую вы можете использовать, например:

Double a = 7.77d * 100000000; //Multiply Operation

System.out.println("Large multiply " + a.doubleValue());

System.out.println("Magic of big decimal " + BigDecimal.valueOf(a).setScale(0,RoundingMode.HALF_EVEN).toPlainString());

a = 7.77d / 100000; //Devide Operation

System.out.println("Devide operation " + a.doubleValue());

System.out.println("Magic of big decimal " + BigDecimal.valueOf(a).toPlainString());

DecimalFormat formatter = new DecimalFormat("0.000000");

System.out.println("Trimming the big string : "+formatter .format(a)); 

Выход:1006 *

Large multiply 7.77E8

Magic of big decimal 777000000

Devide operation 7.769999999999999E-5

Magic of big decimal 0.00007769999999999999

Trimming the big string : 0.000078
1 голос
/ 04 апреля 2011

Вы можете попробовать это:

double v = 1234567890123d;
Double d = new Double( v );

Теперь, когда вы передаете его в TextView, вы можете передать его следующим образом (при условии, что вы заинтересованы только в целой части double):

d.longValue();

Теперь, почему он дает вам 1.234E12: Правила печати двойников можно найти здесь (см. Раздел toString). Он точно описывает, когда цифры будут переведены на научную запись при печати. ​​

Вы также можете заглянуть в NumberFormat.

...