[java] Java의 이중 십진수 형식

double의 소수를 형식화하는 데 문제가 있습니다. 예를 들어 4.0과 같이 이중 값이있는 경우 소수점을 대신 4.00으로 지정하려면 어떻게해야합니까?



답변

방법 중 하나는 NumberFormat을 사용하는 것 입니다.

NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(4.0));

산출:

4.00


답변

Java 8에서는 format방법 을 사용할 수 있습니다 .. :-

System.out.format("%.2f", 4.0); // OR

System.out.printf("%.2f", 4.0); 
  • ffloating포인트 가치 로 사용됩니다 ..
  • 2 소수점 이하는 소수점 이하 자릿수를 나타냅니다. .

대부분의 Java 버전의 경우 다음을 사용할 수 있습니다 DecimalFormat.-

    DecimalFormat formatter = new DecimalFormat("#0.00");
    double d = 4.0;
    System.out.println(formatter.format(d));


답변

String.format 사용 :

String.format("%.2f", 4.52135);

문서에 따라 :

항상 사용되는 로케일은에서 반환 한 것 Locale.getDefault()입니다.


답변

String.format을 사용하여 다음을 수행 할 수 있습니다.

double price = 52000;
String.format("$%,.2f", price);

@Vincent의 답변과 다른 쉼표를 확인하십시오.

산출:

$52,000.00

형식화에 대한 좋은 리소스 는 주제에 대한 공식 Java 페이지입니다.


답변

항상 정적 메서드를 사용할 수 printf from System.out있습니다. 그런 다음 해당 포맷터를 구현합니다. 이렇게하면 다른 예제에서 수행해야하는 힙 공간이 절약됩니다.

전의:

System.out.format("%.4f %n", 4.0);

System.out.printf("%.2f %n", 4.0); 

꽤 큰 보너스 인 힙 공간을 절약합니다. 그럼에도 불구하고 저는이 예제가 다른 어떤 답변보다 훨씬 더 관리하기 쉽다고 생각합니다. 특히 대부분의 프로그래머가 C에서 printf 함수를 알고 있기 때문에 (Java는 함수 / 메소드를 약간 변경합니다).


답변

double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));


답변

new DecimalFormat("#0.00").format(4.0d);