> 백엔드 개발 > Golang > Python에서 최대 유효 자릿수를 사용하여 Float64를 고정 너비 문자열로 변환하는 방법은 무엇입니까?

Python에서 최대 유효 자릿수를 사용하여 Float64를 고정 너비 문자열로 변환하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-10 17:34:16
원래의
660명이 탐색했습니다.

How to Convert a Float64 to a Fixed-Width String with Maximum Significant Digits in Python?

Float64를 최대 유효 자릿수를 사용하는 고정 너비 문자열로 변환

고정 너비 테이블에서 float64 값을 인쇄할 때 종종 다음이 필요합니다. 정밀도를 유지하기 위한 최대 유효 자릿수입니다. 표준 라이브러리에는 이 목적을 위한 편리한 방법이 부족합니다.

사용자 정의 형식 지정자

이러한 제한을 극복하기 위해 값의 크기에 적응하는 사용자 정의 형식 지정자를 만들 수 있습니다. . 이 전략에는 값을 조사하여 과학적 표기법이 필요한지 결정하는 작업이 포함됩니다. 그렇다면 지수의 너비를 계산하고 이에 따라 분수의 정밀도를 조정합니다. 그렇지 않은 경우 분수의 길이를 검색하여 고정 너비에 필요한 정밀도를 계산합니다.

Python 구현

다음은 제안된 접근 방식의 Python 구현입니다.

import math

def format_float(value, width):
  """
  Converts a float to a fixed-width string with maximum significant digits.

  Args:
    value: The float value to format.
    width: The fixed width of the string.

  Returns:
    A fixed-width string containing the formatted value.
  """

  if abs(value) >= 1e12:
    # Scientific notation
    exponent = int(math.log10(abs(value)))
    fraction_width = width - len(str(exponent)) - 2
    return f"{value:.{fraction_width}g}"
  else:
    # Regular form
    fraction_length = len(str(int(value)))
    precision = width - fraction_length - 1
    return f"{value:.{precision}f}"
로그인 후 복사

예시 사용량

values = [0, 1234.567890123, 0.1234567890123, 123456789012.0, 1234567890123.0,
          9.405090880450127e9, 9.405090880450127e19, 9.405090880450127e119]

for value in values:
  print(format_float(value, 12))
로그인 후 복사

출력

0.0000000000
0.1234567890
1234.5678901
123456789012
1.234568e+12
9405090880.5
9.405091e+19
9.40509e+119
로그인 후 복사

위 내용은 Python에서 최대 유효 자릿수를 사용하여 Float64를 고정 너비 문자열로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿