2011-02-27 2 views
3

누군가 아래에 언급 된 코드의 출력이 음수 인 이유를 말해 줄 수 있습니까 ??곱셈 결과는 음수입니다.

A * B는 = -0

여기

A는 롱 타입되고, B 소수점 클래스의 목적 ..... A는 = -28 및 b = 0, 출력이면 -0 파이썬 decimal 문서에서

답변

7

:

서명 된 제로는 언더 계산에서 발생할 수 있습니다. 그들은 을 으로 계산했을 때 표시되는 부호를보다 정확하게 나타 내기 위해 을 유지합니다. 크기가 0이므로 양수 및 음수 0은 모두 으로 처리되며 해당 기호는 정보 용입니다.

+0

효과가 0이지만 "추가"정보가있는 결과를 처리하는 데 권장되는 방법은 무엇입니까? @Bodhi 사용자 반응 출력 – Bodhi

+0

에서 이것을 사용하려는 경우, 사용자의 의도가 확실하지 않습니다. 사용자에게 어떤 정보를 제공 할 것인지 묻는다면, 그 정보 만 결정할 수 있습니다. 그러나 아마도 문자열 표현을 구문 분석 할 필요가없는 방식으로 정보를 얻는 방법을 묻는 중입니까? 이를 위해'as_tuple' 메쏘드는 매우 좋습니다 :'repr (decimal.Decimal ('- 0'). as_tuple())''DecimalTuple (sign = 1, digitits = (0,), exponent = 0) '을 출력합니다. ', 여기서'DecimalTuple'은 커스텀'namedtuple'입니다. 양수'Decimal' 객체의 경우,'sign = 0'; 음수의 경우,'sign = 1'. 그래서'decimal.Decimal ('- 0'). as_tuple(). sign == 1'. – senderle