How to get around round off error?

2 Ansichten (letzte 30 Tage)
ARSHA MAMOOZADEH
ARSHA MAMOOZADEH am 8 Jul. 2019
Kommentiert: Stephen23 am 8 Apr. 2021
Hello all, I read about the round off error that MATLAB experiences with double precision numbers, and it being caused by how MATLAB stores numbers in binary. I was wondering if there was any way to get around this. Specifically I would like to subtract 0.021557700000000 from 0.021557800000000 without any round off error. The answer should be 1e-7 but MATLAB gives -9.999999999940612e-08. I tried to convert the numbers to symbols and subtract symbolically but I got the same error. Any ideas?
  11 Kommentare
ARSHA MAMOOZADEH
ARSHA MAMOOZADEH am 8 Jul. 2019
Yep. Currently I am testing this out...
A=(215577/10000000);
B=(215578/10000000);
C=(215579/10000000);
BA=B-A;
CB=C-B;
BA_eps=eps(BA)
CB_eps=eps(CB)
if BA_eps == CB_eps
B=C;
A=C;
end
This seems to be working, and I think I am going to add a tolerance on the if statement. Another thing I made was this however it still has the round off error.
F21=round(F2-F1,16)
F32=round(F3,F2,16)
16 is the maximum number of decimals my input has.
Stephen23
Stephen23 am 8 Apr. 2021
"16 is the maximum number of decimals my input has."
Then any attempt to define a higher precision number for your operations is totally meaningless.
I very much doubt that your input data were even measured to 16 significant digit accuracy, given that some of the most accurate measurements in science are around the same order:

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Zakaria moeri
Zakaria moeri am 8 Apr. 2021
take a look at vpa and digits method already exist in matlab documentation.

Community Treasure Hunt

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

Start Hunting!

Translated by