2017-01-10 1 views
0

오늘은 IronPython2.7에 다음과 같은 문제를 발견했습니다. IronPython 대신 Python2.7 또는 Python3.4를 사용하면 동일한 결과를 얻습니다. (철) 파이썬 형식 문제는

>>> "%s%.2f" % ('x', -0.004) 
'x0.00' 

가 'X'

는 임의의 문자입니다 :
>>> "%.2f" % -0.004 
'-0.00' 

그럼 난과 같이 형식 문자열에 두 개의 인수를 전달하여 negativ 제로 제거 할 수 있다는 것을 깨달았다. 그래서 float 값과 마이너스가 사라지기 전에 다른 문자열을 포맷합니다. 즉 내가받을 경우, 비록 Python2.7와 Python3.4 작동하지 않습니다

>>> "%s%.2f" % ('x', -0.004) 
'x-0.00' 

사람이 여기에 무슨 일이 일어나고 있는지 알고 있나요?

형식화 된 "negativ zero"의 목적은 무엇입니까?

+0

IronPython의 버그와 같습니다. 가능할 때마다 CPython 레퍼런스 구현을 따라야한다. –

+0

당신이 알고 있는지 모르겠지만 음수 0은 완벽하게 유효한 float 값입니다 :'-0.0'. 그것은 양수 영 (0)과 구별됩니다. IronPython이 빼기 기호를 사라지게하는 이유는 알 수 없으므로 형식 문자열에 다른 값이 있습니다. – Blckknght

답변

0

다음 printf -like 포맷하고, 먼저 수를 포맷 할 수 있습니다

(계정에 @MarkDikinson 코멘트를 취할 편집) :

"%.2f" % (round(-0.004, 2)+0) 

+0가 부정적인 영 기호를 제거하는 것입니다 .

round 또한 (안 "%.2f"에 의해 처리됩니다 디스플레이에 대해 이야기) 숫자 자체 의 라운딩에 필요한 방법 자릿수 지정하려면 ndigits 인수를 취할 수 있습니다.

+1

파이썬에 내장 된'round' 함수 대신 NumPy의'around' 함수를 사용하는 이유는 무엇입니까? (그리고 아마 소수점 둘째 자리로 반올림하고 싶을 것입니다 ...) –

+0

@MarkDickinson 당신 말이 맞습니다! 나는 직장에서 항상 numpy를 사용하지만 표준 라운드도있다.) – mguijarr

+1

@mguijarr는 numpy를 ironpython 용으로 설치하는 것이 문제가 될 수있다. – Odomontois