Я изучаю Java и получил раздел, посвященный различным Java-утилитам и форматированию чисел. Тем не менее, мое форматирование работает не так, как говорится в книге. Мой код выглядит следующим образом:DecimalFormat не дает правильного вывода в Java
import java.text.NumberFormat;
import java.text.DecimalFormat;
public class Lessons {
public static void main(String[] args) {
double d = 7.1348759272948202842847;
System.out.printf("%15e %n", d);
NumberFormat cashFormat = NumberFormat.getCurrencyInstance();
System.out.println(cashFormat.format(d));
double e = 14.9;
double f = 16.09805938020001;
double g = 12346;
DecimalFormat Dec_Format = new DecimalFormat("##0.##E0");
System.out.println(Dec_Format.format(e));
System.out.println(Dec_Format.format(f));
System.out.println(Dec_Format.format(g));
}
В книге, например, он говорит, что 12345 отформатирован "## 0 ## E0." Является "12.3E3". Выход, который я получаю, составляет «12.345E3».
Результат, который я получаю, имеет смысл, но поскольку он не соответствует книге, я не уверен, что это ошибка в книге или если я делаю что-то неправильно.
Это нормальный выход?
Понимаю. Я правильно понял часть форматирования денег, но из-за того, как это показала книга, научная нотация не имела большого смысла. Если я правильно понимаю ваш пример, нотация Java будет по умолчанию одной десятичной запятой без указания, поэтому, когда я добавлю ##, она добавит еще два числа на конце (если доступно). (т. е. ## 0.E0 = 12,3, тогда как ## 0. ## E0 = 12.345E3). Это сделало бы намного больше смысла, чем формулировка/форматирование в книге. – AdamWestPhD
так? что это значит, что мое решение неверно @AdamWestPhD :) –
Похоже, что он работает :) спасибо за помощь – AdamWestPhD