source

Java의 이중 10진 형식

factcode 2022. 9. 22. 00:10
반응형

Java의 이중 10진 형식

더블 소수점 포맷에 문제가 좀 있어요.4.0과 같이 이중 값이 있는 경우 소수점 형식을 4.00으로 설정하려면 어떻게 해야 합니까?

방법 중 하나는 번호를 사용하는 것입니다.포맷.

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); 
  • f에 사용됩니다.floating포인트 값..
  • 2십진법 뒤의 십진법 자리수.

대부분의 Java 버전에서는DecimalFormat: -

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

String을 사용합니다.형식:

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

문서에 따르면:

항상 사용되는 로케일은 에 의해 반환된 로케일입니다.Locale.getDefault().

String 사용.다음과 같이 할 수 있습니다.

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);

다음 방법 중 하나를 사용할 수 있습니다.

  1. 사용하시는 경우java.text.DecimalFormat

    DecimalFormat decimalFormat = NumberFormat.getCurrencyInstance(); 
    decimalFormat.setMinimumFractionDigits(2); 
    System.out.println(decimalFormat.format(4.0));
    

    또는

    DecimalFormat decimalFormat =  new DecimalFormat("#0.00"); 
    System.out.println(decimalFormat.format(4.0)); 
    
  2. 단순 문자열 형식으로 변환하는 경우

    System.out.println(String.format("%.2f", 4.0)); 
    

위의 모든 코드는 4.00으로 출력됩니다.

대체 방법은setMinimumFractionDigits로부터의 메서드NumberFormat학급.

여기서는 기본적으로 소수점 뒤에 표시할 숫자 수를 지정합니다.

즉,4.0생산하다4.00(지정된 금액이 2라고 가정합니다.

하지만, 만약 당신이Double입력에 지정된 양보다 많은 양이 포함되어 있습니다. 지정된 최소 양만큼 소요된 다음 반올림/내림된 숫자를 하나 더 추가합니다.

예를들면,4.15465454최소 2개의 지정량을 지정하면4.155

NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
Double myVal = 4.15465454;
System.out.println(nf.format(myVal));

온라인으로 시험해 보다

이렇게 할 수 있는 방법은 많습니다.이러한 항목은 다음과 같이 제공됩니다.

원래 번호가 아래에 있다고 가정합니다.

 double number = 2354548.235;

번호 사용형식:

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

String 사용.형식:

System.out.println(String.format("%,.2f", number));

Decimal Format 및 패턴 사용:

NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
        DecimalFormat decimalFormatter = (DecimalFormat) nf;
        decimalFormatter.applyPattern("#,###,###.##");
        String fString = decimalFormatter.format(number);
        System.out.println(fString);

Decimal Format 및 패턴 사용

DecimalFormat decimalFormat = new DecimalFormat("############.##");
        BigDecimal formattedOutput = new BigDecimal(decimalFormat.format(number));
        System.out.println(formattedOutput);

모든 경우 출력2354548.23 입니다.

주의:

반올림 중에 추가할 수 있습니다.RoundingMode포메터에 입력해 주세요.아래에는 몇 가지 반올림 모드가 있습니다.

    decimalFormat.setRoundingMode(RoundingMode.CEILING);
    decimalFormat.setRoundingMode(RoundingMode.FLOOR);
    decimalFormat.setRoundingMode(RoundingMode.HALF_DOWN);
    decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
    decimalFormat.setRoundingMode(RoundingMode.UP);

Import는 다음과 같습니다.

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;

100% 동작합니다.

import java.text.DecimalFormat;

public class Formatting {

    public static void main(String[] args) {
        double value = 22.2323242434342;
        // or  value = Math.round(value*100) / 100.0;

        System.out.println("this is before formatting: "+value);
        DecimalFormat df = new DecimalFormat("####0.00");

        System.out.println("Value: " + df.format(value));
    }

}

번째 Import 첫째 ImportNumberFormat그 후 을 추가합니다 그 후 다음을 추가합니다.

NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();

이 경우 소수점 두 자리, 통화에 관한 경우 달러 기호를 사용할 수 있습니다.

import java.text.NumberFormat;
public class Payroll 
{
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
    int hoursWorked = 80;
    double hourlyPay = 15.52;

    double grossPay = hoursWorked * hourlyPay;
    NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();

    System.out.println("Your gross pay is " + currencyFormatter.format(grossPay));
    }

}

다음과 같이 할 수 있습니다.

double d = 4.0;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));

오래된 토픽인 것은 알지만 쉼표 대신 마침표를 사용하고 싶다면 결과를 문자열에 X.00으로 저장한 후 X.00으로 변경하기만 하면 X.00을 얻을 수 있습니다.

가장 간단한 방법은 replace를 사용하는 것입니다.

String var = "X,00";
String newVar = var.replace(",",".");

출력은 당신이 원하는 X.00이 될 것입니다.또한 쉽게 하기 위해 한 번에 모든 작업을 수행하고 이중 변수에 저장할 수 있습니다.

Double var = Double.parseDouble(("X,00").replace(",",".");

이 답변이 지금 당장은 유용하지 않다는 것을 알지만, 이 포럼을 체크하는 누군가가 이와 같은 빠른 해결책을 찾고 있을 것입니다.

언급URL : https://stackoverflow.com/questions/12806278/double-decimal-formatting-in-java

반응형