How does MATLab handle decimal accuracy?

조회 수: 5 (최근 30일)
Isaiah van Hunen
Isaiah van Hunen 2016년 5월 18일
댓글: Walter Roberson 2016년 5월 21일
Hi,
I use MATLab to calculate an energy value up to a specific decimal place. However, I have noticed it can only do so up to its 54th decimal place. After that, when adding values (decimals) of the 55th power (numbers like 7.000000000000001e-55), no change is stored.
I have two questions;
  1. Is there something one can do to increase the decimal accuracy? I have read several related topics, and I'm afraid this is not, but it's worth a shot. I thought about storing the decimals places in an array, but MATLab also needs to calculate with this value, which an array would prevent (you'd have to put them in a value again, which would have that problem).
  2. How can I detect the maximum amount of decimal places that the computer can go with? My computer apparently handles 54, but I intend to share my code, and I'd like to give a warning if a user requests more decimal places than their computer will show (assuming this 54-value is different per computer). I read something about the use of eps(E), but I don't quite understand this or how to convert this to the number 54 (now it shows 5.551115123125783e-17)
Kind regards,
Isaiah van Hunen
P.S. I have no problem with rounded of values in my display, I use num2str(E,decimals) to ensure that it is shown to its maximum amount of decimal places.

답변 (1개)

Walter Roberson
Walter Roberson 2016년 5월 18일
You are not correct:
>> 1e-200+2e-200+3e-200
ans =
6e-200
The limit is 53 binary places:
>> (1+2^(-52)) == 1
ans =
0
>> (1+2^(-53)) == 1
ans =
1
This number, 2^(-52) is also called eps when used in its relative form.
The limit is the same for everyone who uses IEEE 754 Double Precision. You cannot increase it except by switching to the Symbolic Toolbox or by using a third-party package such as John D'Errico's VPI (Variable Precision Integer) from the File Exchange
  댓글 수: 5
Isaiah van Hunen
Isaiah van Hunen 2016년 5월 21일
Okay, so roughly said; if using floating point values with no whole numbers (so 0.[...]) and no Symbolic Toolbox, you can only calculate to an accuracy of 15 decimal places?
Walter Roberson
Walter Roberson 2016년 5월 21일
About 15 decimal places from the first non-zero digit.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by