>Java >java지도 시간 >불필요한 후행 0을 제거하고 정확한 형식을 사용하여 Java에서 Double을 인쇄하려면 어떻게 해야 합니까?

불필요한 후행 0을 제거하고 정확한 형식을 사용하여 Java에서 Double을 인쇄하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-31 13:41:11650검색

How Can I Print Doubles in Java with Precise Formatting, Eliminating Unnecessary Trailing Zeros?

Java에서 부동 숫자를 정밀도 있게 인쇄

64비트 double이 범위 내의 정수를 정확하게 표현하는 기능을 고려할 때 혼합 정수와 혼합 정수를 인쇄할 때 문제가 발생합니다. 이중 값. String.format("%f")은 가까운 형식을 제공하지만 작은 값에 대해 불필요한 후행 0을 추가합니다.

해결책 찾기:

목표는 인쇄하는 것입니다. 실제 double에 대해 높은 정밀도를 유지하면서 소수점 0 없이 double로 저장된 정수 값입니다. 예를 들어, 다음과 같은 경우 입력:

  • 232.00000000
  • 0.18000000000
  • 1237875192 .0
  • 4.5800000000
  • 0.00000000
  • 1.23450000

원하는 출력은 be:

  • 232
  • 0.18
  • 1237875192
  • 4.58
  • 0
  • 1.2345

효율적 형식 지정:

형식을 최적화하기 위해 정수 값이 64비트 double로 정확하게 표현될 수 있다는 사실을 활용할 수 있습니다. 다음 Java 코드 조각은 성능 집약적인 문자열 조작에 의존하지 않고 이를 달성합니다.

public static String fmt(double d) {
    if (d == (long) d)
        return String.format("%d", (long) d);
    else
        return String.format("%s", d);
}

설명:

  • 정확하게 표현할 수 있는 정수 값의 경우 double로, 코드는 이를 long으로 변환하고 %d를 사용하여 형식을 지정합니다. 이렇게 하면 불필요한 후행 0이 제거됩니다.
  • 정수가 아닌 값의 경우 코드는 %s를 사용하여 최소한의 정밀도로 원래 double 값을 유지합니다.

결과:

예제 입력에 적용하면 출력이 원하는 형식과 일치합니다.

232
0.18
1237875192
4.58
0
1.2345

위 내용은 불필요한 후행 0을 제거하고 정확한 형식을 사용하여 Java에서 Double을 인쇄하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.