'setprecision', 24
显示 更早的评论
Why are the two results below the same? I would like to simulate single precision with system_dependent('setprecision' , 24).
>> system_dependent('setprecision', 64)
>> 10000*sqrt(exp(pi))-48104
ans =
0.773809653510398
>> system_dependent('setprecision', 24)
>> 10000*sqrt(exp(pi))-48104
ans =
0.773809653510398
采纳的回答
更多回答(1 个)
Gaurav Garg
2021-1-25
Hi,
On running the same code, and then verifying the variable precision being used, I could see that the variable precision was never changed.
You can verify the variable precision using the digits.
digits
In your case, if you need to change the precision, you can use the below piece of code -
digitsOld = digits(64);
vpa(10000*sqrt(exp(pi))-48104)
digits
digitsOld = digits(24);
vpa(10000*sqrt(exp(pi))-48104)
digits
3 个评论
Walter Roberson
2021-1-25
digits only applies to the symbolic toolbox, never to floating-point work.
Beat Aebischer
2021-1-25
Walter Roberson
2021-1-25
The solution with vpa needs modification to prevent the argument from being evaluated in double precision before it gets to vpa.
Q = @(v) sym(v) ;
digitsOld = digits(64);
vpa(10000*sqrt(exp(Q(pi)))-48104)
digits
digitsOld = digits(24);
vpa(10000*sqrt(exp(Q(pi)))-48104)
It would need further modifications to emulate step by step evaluation at the chosen digits the way that setting system_dependent('precision') would
类别
在 帮助中心 和 File Exchange 中查找有关 Numbers and Precision 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!