>

입력 번호와 같은 문자열을 어떻게 얻을 수 있습니까?

>>> '{:f}'.format(1559628846)
'1559628846.000000'

1559628846이 예상됩니다

>>> '{:}'.format(1559628846.0001234)
'1559628846.0001235'

1559628846.0001234 예상

>>> '{:}'.format(0.000001)
'1e-06'

0.000001 예상

내 진짜 문제는 숫자를 변경하지 않고 문자열과 숫자를 연결하는 방법입니까?

>>> '{},{}'.format('Hi', 1559628846.0001234)
'Hi,1559628846.0001235'

'안녕하세요, 1559628846.000123'

  • 답변 # 1

    10은 부동 소수점 숫자가 화면에 표시되지만 컴퓨터에는 2를 기준으로 저장됩니다. 컴퓨터가 사용하는 기본 2 숫자는 항상 정확하게 표현되지는 않습니다. docs.python.org는 뉘앙스에 대한 훌륭한 기사를 제공합니다.

    반올림 오류에 대해 설명합니다. 파이썬이 사용중인 정확한 자릿수를 기억하지 못하는 이유는 부동 소수점 숫자를 저장하는 것이 시작한 문자열을 저장하는 것보다 효율적이기 때문입니다. 이 테스트를 실행하여 차이점을 확인하십시오.

    >>> import sys
    >>> fnum = 12345.67890
    >>> snum = '12345.67890'
    >>> sys.getsizeof(fnum)
    16
    >>> sys.getsizeof(snum)
    36
    >>>
    
    

    프로그래밍에서는 숫자 입력 방식에 거의 신경 쓰지 않고 부동 소수점 표현 만 저장하고 디스플레이 계층에 유스 케이스에 따라 사용자에게 유쾌한 표현을 표시합니다. 원래 입력 한 내용을 실제로 신경 쓰면 float가 아닌 문자열로 저장해야합니다.

  • 답변 # 2

    입력 번호를 문자열로 정의해야합니다. 예를 들면 다음과 같습니다.

    print('{},{}'.format('Hi','1559628846.0001234'))
    
    

    출력 : Hi,1559628846.0001234

    그렇지 않으면 항상 근사치가됩니다.

    또 다른 옵션은 정확도 순서가 아닌 특정 숫자로 반올림하는 것입니다.

    i = round(1559628846.0001234, 5)
    print('{},{}'.format('Hi',i))
    
    

    출력 : Hi,1559628846.00012

관련 자료

  • 이전 coldfusion - 애플리케이션 범위에 CFC 사용자 컨텐츠 핸들러를 저장하는 것이 안전합니까?
  • 다음 javascript - 접두사로 모든 ​​data- * 속성을 얻는 방법