저는 파이썬에서 200 자리 숫자로 작업했습니다. math.sqrt (n)를 사용하여 숫자의 제곱근을 찾을 때 잘못된 대답을 얻고 있습니다.숫자 모듈의 sqrt 함수를 파이썬에서 긴 숫자로 사용하기
In[1]: n=9999999999999999999999999999999999999999999999999999999999999999999999
999999999999999999999999998292000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000726067
In[2]: x=int(math.sqrt(n))
In[3]: x
Out[1]: 10000000000000000159028911097599180468360808563945281389781327
557747838772170381060813469985856815104L
In[4]: x*x
Out[2]: 1000000000000000031805782219519836346574107361670094060730052612580
0264077231077619856175974095677538298443892851483731336069235827852
3336313169161345893842466001164011496325176947445331439002442530816L
In[5]: math.sqrt(n)
Out[3]: 1e+100
x * x (201 자리)가 n (200 자리)보다 크기 때문에 x 값이 예상보다 커집니다. 여기서 무슨 일이 일어나고있는거야? 내가 여기서 틀리게되고있는 개념이 있니? 어떻게하면 매우 큰 숫자의 근원을 찾을 수 있습니까?
변화를 산출 (N math.sqrt()) 'X = INT를'X = math.sqrt 행 (N) '시도해보십시오 – sailesh
1e + 100과 같은 지수 형태로 동일한 답을줍니다. –
'math.sqrt()'는 bignum이 아닌 IEEE 754 산술을 따르는 부동 소수점 값을 반환합니다. –