Как предотвратить научное отображение поплавка? - PullRequest
0 голосов
/ 16 марта 2012

У меня есть следующий вывод

выход = 4,08E-4

выход = 8,9E-5

выход = 0,978461

выход = 0,224577

Теперь, что я не получаю, это для 4.08E-4 - я предполагаю, что это отрицательная экспонента, и если <0, оно возвращает истину, но есть ли другой способ показать это вдесятичный формат?</p>

Ответы [ 4 ]

2 голосов
/ 16 марта 2012

Скорее всего, вы пытаетесь напечатать float / double, используя System.out.println (...).

Это в конечном итоге вызывает public static String toString() метод Float (или Double). В любом случае, если вы читаете Javadoc, в нем говорится:

Если m меньше 10-3 или больше или равно 107, то это представлены в так называемой «компьютеризированной научной нотации». Пусть п будет единственное целое число такое, что 10n <= m <10n + 1; тогда пусть будет математически точное отношение m и 10n, так что 1 <= a <10. Величина затем представляется как целая часть, как один десятичная цифра, за которой следует «.» ('\ u002E'), за которыми следуют десятичные цифры представляет дробную часть а, за которой следует буква «Е» ('\ u0045'), за которым следует представление n в виде десятичного целого числа, как производится методом Integer.toString (int). </p>

Вы можете обойти это, используя System.out.printf(), например:

double d = 0.000408;

System.out.println(d);
System.out.printf("%f", d);

Это печатает:

4.08E-4
0,000408

Мои 2 цента.

1 голос
/ 16 марта 2012

Я использую NumberFormat class-

        double d = 0.000408;            
        //For considering 4 digits after decimal place
        NumberFormat nf = NumberFormat.getInstance();
        nf.setMaximumFractionDigits(4);            
        nf.setGroupingUsed(false);

        System.out.println(d);
        System.out.println(nf.format(d));
1 голос
/ 16 марта 2012
System.out.println(4.08e-4);

0.000408
0 голосов
/ 16 марта 2012

Я думаю, что вы ищете либо класс NumberFormat, либо функцию printf, либо одна из них будет работать.

...