a=7/3;
b=sym(7/3);
c=sym(7/3,'d');
d=str2sym('7/3');
vpa(abs(a-b)),vpa(abs(b-d)),vpa(abs(c-d))
a=pi/3;
b=sym(pi/3);
c=sym(pi/3,'d');
d=str2sym('pi/3');
vpa(abs(a-b)),vpa(abs(b-d)),vpa(abs(c-d))
a=pi*3^(1/3);
b=sym(pi*3^(1/3));
c=sym(pi*3^(1/3),'d');
d=str2sym('pi*3^(1/3)');
vpa(abs(a-b)),vpa(abs(b-d)),vpa(abs(c-d))
abs(a-b)) | vpa(abs(b-d)) | vpa(abs(c-d)) | |
---|---|---|---|
7/3 | 0.0 | 0.0 | 0.00000000000000014802973661668756666666667788716 |
pi/3 | 0.0 | 0.0 | 0.00000000000000011483642827992216762806615818554 |
pi*3^(1/3) | 0.0 | 0.00000000000000026601114166290944374842393221638 | 0.000000000000000266011141662909472676799178551 |
由上表可知,a和b在精度上是一致的,都是double精度,sym和str2sym在表示一般的分数表达式时是一样的,但是需要符号表达式计算时,b的精度不足。c一直都是十进制截断,比符号计算精度低。