복붙노트

[PYTHON] 음수 0을 파이썬 문자열에서 양수로 0으로 포맷하는 방법은 무엇입니까?

PYTHON

음수 0을 파이썬 문자열에서 양수로 0으로 포맷하는 방법은 무엇입니까?

나는 문자열을 포맷팅하기 위해 다음을 가지고있다.

'%.2f' % n

n이 0 인 경우 (-0, -0.000 등) 출력은 -0.00이됩니다.

n의 음수 및 양수 0 값에 대해 항상 출력을 0.00으로 만드는 방법은 무엇입니까?

(이 작업을 수행하는 것은 상당히 솔직하게 진행되지만 간결한 파이썬 방법이라고는 볼 수 없습니다. 이상하게도 알지 못하는 문자열 서식 옵션이 있습니다.)

해결법

  1. ==============================

    1.0 추가 :

    0 추가 :

    >>> a = -0.0
    >>> a + 0
    0.0
    

    형식을 지정할 수 있습니다.

    >>> '{0:.3f}'.format(a + 0)
    '0.000'
    
  2. ==============================

    2.가장 간단한 방법은 다음과 같이 형식을 특수화하는 것입니다.

    가장 간단한 방법은 다음과 같이 형식을 특수화하는 것입니다.

    >>> a = -0.0
    >>> '%.2f' % ( a if a != 0 else abs(a) )
    0.0
    

    그러나 str.format 메소드가 % 대체보다 선호된다는 점에 유의하십시오 -이 경우 (및 대부분의 간단한 경우) 구문은 거의 동일합니다.

    >>> '{:.2f}'.format(a if a != 0 else abs(a))
    

    또한 bool (a)가 False 일지라도 더 간결한 a 또는 abs (a)는 보이지 않습니다.

  3. ==============================

    3.

    >>> x= '{0:.2f}'.format(abs(n) if n==0 else n)
    >>> print(x) 
    0.00
    

    if 조건의 이유 :

    >>> -0.0000==0
    True
    >>> 0.000==0
    True
    >>> 0.0==0
    True
    
  4. ==============================

    4.

    import re
    re.sub("[-+](0\.0+)", r"\1", number)
    

    e.f. :

    re.sub("[-+](0\.0+)", r"\1", "-0.0000") // "0.0000"
    re.sub("[-+](0\.0+)", r"\1", "+0.0000") // "0.0000"    
    
  5. ==============================

    5.매우 밀접하게 관련된 문제는 -0.00001도 "-0.00"으로 형식화된다는 것입니다. 그것은 혼란 스러울 수 있습니다. 위의 대답은 이것을 처리하지 않습니다 (단, 사용자 278064는 고정 된 정규 표현식을 필요로합니다).

    매우 밀접하게 관련된 문제는 -0.00001도 "-0.00"으로 형식화된다는 것입니다. 그것은 혼란 스러울 수 있습니다. 위의 대답은 이것을 처리하지 않습니다 (단, 사용자 278064는 고정 된 정규 표현식을 필요로합니다).

    못 생겼지 만,이게 내가 할 수있는 최선의 방법이다.

    import re
    re.sub (r"^-(0\.?0*)$", r"\1", "%.2f" % number)
    
  6. ==============================

    6.abs 함수를 사용할 수 있습니다.

    abs 함수를 사용할 수 있습니다.

    In [27]: abs(-0)
    Out[27]: 0
    
    In [28]: abs(-1)
    Out[28]: 1
    
    In [29]: abs(-2)
    Out[29]: 2
    
    In [30]: abs(-2) == -2
    Out[30]: False
    
    In [31]: abs(-2) == 2
    Out[31]: True
    
  7. from https://stackoverflow.com/questions/11010683/how-to-have-negative-zero-always-formatted-as-positive-zero-in-a-python-string by cc-by-sa and MIT license