MATLAB Answers


vpa doesn't seem to work

Asked by Jacob Kelley on 14 Nov 2019 at 1:44
Latest activity Commented on by Walter Roberson
on 14 Nov 2019 at 5:26
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);
I get
Why does it look like it is still having roud off error after 16 digits?


Sign in to comment.

1 Answer

James Tursa
Answer by James Tursa
on 14 Nov 2019 at 2:30
Edited by James Tursa
on 14 Nov 2019 at 2:32
 Accepted Answer

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.


Jacob Kelley on 14 Nov 2019 at 2:55
Sweet, that makes sense now
Jacob Kelley on 14 Nov 2019 at 3:24
Another question you might know, Why does it attach the .0 to the end? I also can't have it do that with what I am trying to do. example:
s = vpa('35524',50);
Walter Roberson
on 14 Nov 2019 at 5:26
(answered in the question you posted about this)

Sign in to comment.