2016-06-29 2 views
1

BigDecimal 음수 인 ** 연산자를 사용하면 Zero or negative argument 오류로 실패합니다. 일부 BigDecimal이 ** 연산자로 계산하지 못합니다.

나는이 같은 일부 유사한 값을 확인 :

-2 ** '0.3'.to_d 
# => -1.23114441 
2 ** '0.3'.to_d 
# => 1.23114441 
2 ** '0.3'.to_d 
# => 1.23114441 
-2 ** '0.3'.to_d 
# => -1.23114441 
2.to_d ** '0.3'.to_d 
# => 1.23114441 
-2.to_d ** '0.3'.to_d 
# => Math::DomainError: Zero or negative argument for log 
from (pry):111:in `**' 
2.to_d ** 3.to_d 
# => 8.0 
-2.to_d ** 3.to_d 
# => -8.0 

왜이 오류가 발생하고 내가 그것을 어떻게 해결할 수있다?

답변

4

나는 오해 한 것을 이제 이해합니다.

-2.0 ** 0.3(-2.0) ** 0.3과 같지만, -(2.0 ** 0.3)과 같습니다.

나는 **-보다 강력하다는 것을 몰랐습니다.

+0

와우, 그건 참으로 놀랍습니다. –

관련 문제