Десятичный формат БЕЗ научной нотации - PullRequest
2 голосов
/ 21 сентября 2011

У меня есть десятичный формат, подобный этому:

DecimalFormat df = new DecimalFormat("#,###.###");

Тогда у меня есть 3 метода, которые просто возвращают значение с плавающей запятой для времени, потенциала и тока со многими десятичными знаками в случае двух последних. Поэтому я пытаюсь получить выходное сообщение с форматированными 3 значениями, так:

System.out.println("t="+df.format(getTime())+"(s), v="+df.format(getPotential())+"(V), i="+df.format(getI())+"(A)");

Время просто отсчитывает секунды от 0 до 10 без десятичной дроби и выглядит нормально, пока не достигнет 10. Затем он показывает 1E + 1. Я просто не понимаю почему, так как я читал в API, и это не должно быть в научной нотации, если я не использую символ 'E' в DecimalFormat.

Кроме того, потенциал изменяется от 0 до определенного значения, используя 3 знака после запятой. Выглядит хорошо, но от 0 до 0,01, он появляется с 4 десятичными знаками, будучи последним всегда 0.

Есть какое-нибудь объяснение этому поведению DecimalFormat? Что я делаю не так?

1 Ответ

0 голосов
/ 21 сентября 2011

Может быть, было бы проще использовать printf в вашем случае:

System.out.printf("t=%d(s) v=%.2f(V) i=%.2f(A)\n", getTime(), getPotential(), getI());
...