#java #decimalformat
#java #десятичный формат
Вопрос:
DecimalFormat, похоже, игнорирует шаблон для десятичной части числа.
DecimalFormat formatter = (DecimalFormat) NumberFormat.getNumberInstance(locale);
formatter.applyPattern("##0.0E");
String text = formatter.format(Double.valueOf(1234.5678));
// text is 1.235E3
Почему он не возвращает 1.2E3?
Комментарии:
1. Читая раздел DecimalFormat javadoc о научной нотации, я подозреваю, что это связано с минимальным и максимальным количеством целых цифр и тем, как они влияют на результат? Однако у меня не было возможности заглянуть более глубоко.
2. Когда я читаю документ, в нем говорится, что количество значащих цифр в мантиссе равно минимальным целым цифрам (1) плюс максимальным дробным цифрам (1), поэтому оно должно быть не менее 2 (1.23E3), но я не могу сделать вывод из документации, почему оно становится 3-значным.
3. Вы вводите его в инженерную нотацию. Смотрите Javadoc.
4. @user207421 Есть ли способ убрать это из инженерной нотации? Я пытаюсь эмулировать то, что делает Excel.
Ответ №1:
0.#E0
дал бы вам правильный ответ.