Raising to the power of large numbers is giving me the wrong answer?
이전 댓글 표시
If I try 11^16 in matlab, I get: 45949729863572160
If I try 11**16 in python, I get: 45949729863572161
Notice, the last digits are different.
As the numbers get larger, the problem gets worse: 99^95 in Matlab: 3848960788934848|488282452569509484590776195611314554049114673132510910096787679715604422673797115451807631980373077374162416714994207463122539142978709403811688831410945323915071533162168320
99**95 in python: 3848960788934848|611927795802824596789608451156087366034658627953530148126008534258032267383768627487094610968554286692697374726725853195657679460590239636893953692985541958490801973870359499
Notice, where I placed the line, that's they begin to differ
the way I printed the numbers in Matlab، to control the precision:
num2str(99^95,1000)
the answer I am looking for is the python answer
채택된 답변
추가 답변 (1개)
Iain
2013년 5월 30일
0 개 추천
Matlab, by default, uses double precision numbers, which puts the useful number of significant figures at around 16. - More than enough for most use.
If you note that where matlab and python start to differ is at the 17th significant figure, then it should be clear to you that that is where the number representation within matlab is limited.
If you force matlab to do the calculations as uint64, you'll get the result accurate to whole numbers of up to 2^64 - 1 (i.e. 18 significant figures)
If you write the appropriate logic/method, you can get matlab to effectively use "uint128", or "uint256", or higher if your needs dictate.
카테고리
도움말 센터 및 File Exchange에서 Call Python from MATLAB에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!