Форматировать число в Java [duplicate]

Кроме того, что еще ответил @anthares:

Поскольку, когда вы ловите исключение, вы должны правильно его обрабатывать. И вы не можете ожидать обработки всех видов исключений в вашем коде. Кроме того, если вы поймаете все исключения, вы можете получить исключение, которое не может справиться и предотвратить код, который является верхним в стеке, чтобы обрабатывать его должным образом.

Основной принцип состоит в том, чтобы поймать наиболее специфический тип, который вы можете.

catch(Exception) является плохой практикой, потому что он также ловит все исключение RuntimeException (исключенное исключение).

23
задан HaskellElephant 19 October 2012 в 17:52
поделиться

4 ответа

Наконец, я делаю это вручную:

public static String parseToCientificNotation(double value) {
        int cont = 0;
        java.text.DecimalFormat DECIMAL_FORMATER = new java.text.DecimalFormat("0.##");
        while (((int) value) != 0) {
            value /= 10;
            cont++;
        }
        return DECIMAL_FORMATER.format(value).replace(",", ".") + " x10^ -" + cont;
}
-5
ответ дан Caipivara 23 August 2018 в 23:12
поделиться

Этот ответ позволит сэкономить время для 40k + людей, которые используют «научную нотацию java».

Что означает Y в %X.YE?

Число между . и E - количество знаков после запятой (НЕ значимые цифры).

System.out.println(String.format("%.3E",223.45654543434));
// "2.235E+02"
// rounded to 3 decimal places, 4 total significant figures

Метод String.format требует, чтобы вы указали число десятичных цифр для округления до. Если вам нужно сохранить точное значение исходного номера, вам понадобится другое решение.

Что означает X в %X.YE?

Число между % и . - это минимальное количество символов, которое будет занимать строка. (это число необязательно, как показано выше, строка будет автоматически заполняться, если вы ее не оставите)

System.out.println(String.format("%3.3E",223.45654543434));
// "2.235E+02" <---- 9 total characters
System.out.println(String.format("%9.3E",223.45654543434));
// "2.235E+02" <---- 9 total characters
System.out.println(String.format("%12.3E",223.45654543434));
// "   2.235E+02" <---- 12 total characters, 3 spaces
System.out.println(String.format("%12.8E",223.45654543434));
// "2.23456545E+02" <---- 14 total characters
System.out.println(String.format("%16.8E",223.45654543434));
// "  2.23456545E+02"  <---- 16 total characters, 2 spaces
11
ответ дан Mike S 23 August 2018 в 23:12
поделиться
    System.out.println(String.format("%6.3e",223.45654543434));

приводит к

    2.235e+02

, который является ближайшим я получаю.

Дополнительная информация: http://java.sun.com/j2se/ 1.5.0 / документы / API / Java / Util / Formatter.html # синтаксис

27
ответ дан Peter Tillemans 23 August 2018 в 23:12
поделиться

Из Отображать номера в научной нотации . ( Копирование / вставка, потому что у страницы возникают проблемы )


Вы можете отображать числа в научной нотации с помощью пакета java.text. Для этого можно использовать DecimalFormat класс в пакете java.text.

В следующем примере показано, как это сделать:

import java.text.*;
import java.math.*;

public class TestScientific {

  public static void main(String args[]) {
     new TestScientific().doit();
  }

  public void doit() {
     NumberFormat formatter = new DecimalFormat();

     int maxinteger = Integer.MAX_VALUE;
     System.out.println(maxinteger);    // 2147483647

     formatter = new DecimalFormat("0.######E0");
     System.out.println(formatter.format(maxinteger)); // 2,147484E9

     formatter = new DecimalFormat("0.#####E0");
     System.out.println(formatter.format(maxinteger)); // 2.14748E9


     int mininteger = Integer.MIN_VALUE;
     System.out.println(mininteger);    // -2147483648

     formatter = new DecimalFormat("0.######E0");
     System.out.println(formatter.format(mininteger)); // -2.147484E9

     formatter = new DecimalFormat("0.#####E0");
     System.out.println(formatter.format(mininteger)); // -2.14748E9

     double d = 0.12345;
     formatter = new DecimalFormat("0.#####E0");
     System.out.println(formatter.format(d)); // 1.2345E-1

     formatter = new DecimalFormat("000000E0");
     System.out.println(formatter.format(d)); // 12345E-6
  }
}  
22
ответ дан Sam Rad 23 August 2018 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: