2channelkrt   3년 전

do 함수의 리턴값이 항상 int로 보장되는것 같은데, ValueError가 뜹니다.

아무리 생각해봐도 원인이 떠오르지 않아 질문을 드려봅니다.

siggog01   1년 전

7번 if 를 K<=0으로 고치면 되더라고요

왜인지는 잘 모르겠습니다...

siggog01   1년 전

math.log2 대신에 K.bit_length()-1 쓰시면 해결됩니다.

log2(9007199254740991)

log2(9007199254740992)

log2(9007199254740993)

전부 같은 값으로 나오는거 보면 내부적으로 오차가 발생하나 봅니다.

2^49 즈음부터 이상해지네요

2channelkrt   1년 전

와 감사합니다! log2가 리턴하는 값이 반올림(?) 되다보니 do에 파라미터로 0보다 작은 값이 들어갈 수도 있나보네요.

오래된 질문에 답변주셔서 감사합니다.

댓글을 작성하려면 로그인해야 합니다.