Я работаю над программой калькулятора на Java, и мне нужно отобразить число длиной не более 15 цифр (включая десятичную точку).Форматирование двойного числа в java
Я пытался отформатировать этот номер, используя String.format("%g", myDouble)
, также с %f
, но не могу получить результат, который я ищу.
Дело в том, что мне нужен номер:
- будет отображаться в научной нотации, если она имеет более чем 15 цифр,
- или отобразить без округления, если у него меньше 15 цифр.
Кроме того, я не хочу фиксированного количества цифр до или после десятичной точки.
Любые предложения?
Это код snipet где получает отображается мой номер:
if (("" + myDouble).length() > 15) {
screen.setText(String.format("%g", myDouble));
} else {
screen.setText("" + myDouble);
}
Одна проблема заключается в том, что, когда пункт else
выполняется, иногда цифры которые будут отображаться в 9.0000E7
, что не выгодно и отличается от String.format("%g", myDouble)
научная нотация, которая больше похожа на 9.000e+7
.
Вы пробовали класс DecimalFormat? https://docs.oracle.com/javase/tutorial/java/data/numberformat.html (внизу страницы) – Shervin
Можете ли вы прояснить: каково поведение округления, которое вы хотите для научной нотации? (Также должно быть ограничено до 15 цифр ...?) – Radiodef
Подсказка: говорить, что 'n'" имеет более 15 цифр "- это то же самое, что сказать« Math.abs (n)> = 1000000000000000.0'. –