why does it change the number when using VPA?

38 次查看(过去 30 天)
why does it change the number? let alone that its not 100 digits.
clear all
s=vpa(1.316074012952492460819218901796999055160068590205822176731922658595866795197302133050743150246601931520047742334253421353091380742095,100)
s = 
1.316074012952492378047963939025066792964935302734375

采纳的回答

Stephen23
Stephen23 2024-7-11,11:15
编辑:Stephen23 2024-7-11,11:57
"why does it change the number when using VPA?"
It doesn't. That "loss of digits" is completely unrelated to VPA.
The change of digits occurs because you are using a double numeric. All double numeric values are limited to around 16 digits of precision, regardless of how many digits you write. So your code is equivalent to this:
n = define some numeric value with around 16 digits of precision
s = vpa(n)
As you can see, VPA never even gets those 100+ digits, so it certainly can't display them!
The correct approach is to avoid using an intermediate double numeric, e.g.:
s = vpa('1.316074012952492460819218901796999055160068590205822176731922658595866795197302133050743150246601931520047742334253421353091380742095',100)
s = 
1.316074012952492460819218901796999055160068590205822176731922658595866795197302133050743150246601932

更多回答(0 个)

标签

产品


版本

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by