vpa doesn't seem to work
조회 수: 6 (최근 30일)
이전 댓글 표시
So I am trying to figure out how to use vpa(#,d) to do calculations with massive numbers on the magnitude of 1 x 10^(233) and need to know exactly down to the ones place. I have symbolic toolbox (syms x works). I have the student package if that helps.
When I do:
n = vpa(26666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666,300);
disp(n)
I get
26666666666666664495576118479230905243264565232272359586606331654070606440955821114246602026241719460353816553395244433385163782965564092296761476436932581062453237774063919113395968897415818722241311296600328363621654143835408695296.0
Why does it look like it is still having roud off error after 16 digits?
댓글 수: 0
채택된 답변
James Tursa
2019년 11월 14일
편집: James Tursa
2019년 11월 14일
You are passing a double into vpa( ), so your precision is lost before you even call it. You could pass in a string instead:
n = vpa('26666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666',300);
Bottom line is don't do any extended precision stuff in double ... even typing it in will ruin your result.
댓글 수: 3
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Number Theory에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!