2017-03-10 14 views
1

큰 정수는 '최대'로 사용합니다. 어떻게 '27'로 최대 값을 나눈 값이 첫 번째 숫자 '27'을 완전히 생략하는 것과 동일하지 않습니다. 기술적으로는 동등해야하지만 파이썬에서는 그렇지 않습니다. 이 예제에서 최대 값을 '27'로 나누면 같은 대답을 얻을 수 있습니까? 인쇄파이썬에서 큰 정수 나누기로 정확한 정확도를 얻는 방법

max = 27*37*47*30*17*6*20*17*21*43*5*49*49*50*20*42*45*1*22*44 
no27 = 37*47*30*17*6*20*17*21*43*5*49*49*50*20*42*45*1*22*44 
div27 = (max/27) 
modno27 = no27%40 
moddiv27 = div27%40 

값은 :

no27 = 35882855955274315680000000 
div27 = 3.5882855955274316e+25 
modno27 = 0 
moddiv27 = 8.0 

답변

6

이 파이썬 3 가정하면, (C double 기준)에 해당 float 결과를 계산 분열하지만 float 사용 표현 제한 파이썬 int S 갖는다 하지 마세요 (위의 ~ 2**53, 모든 정수 값을 나타낼 수는 없습니다).

숫자가 균등하게 나눌 수 있다고 생각되면 //을 사용하여 int-ness를 보존하십시오. 균등하게 분배 할 수없는 경우, 예 : 5 // 3 == 1. 허용되지 않는 경우 divmod을 사용하여 한 번에 몫과 나머지를 모두 계산 (정보가 손실되지 않음)하거나 fractions.Fraction 유형 또는 decimal.Decimal 유형 (적절한 정밀도)을 사용하여 단일 결과 유형에서보다 정확한 결과를 얻을 수 있습니다.

+0

감사합니다. 많은 의미가 있습니다. 무슨 일이 일어나고 있는지 철저히 설명해 주셔서 감사합니다. – user1179317